Hirdetés

2024. május 9., csütörtök

Gyorskeresés

Hozzászólások

(#4251) Hege1234


Hege1234
addikt

sziasztok!

szeretném megoldani, hogy ha nem lett bejelölve a python win installálásnál az add to path
akkor futtatva a script-et, hozzáadja a PATH-hoz, és akkor nem kell újrainstallálni vagy manuálisan szórakozni vele..

mivel minden ilyen módosításhoz admin jog kell, lehetséges lenne ezt python alól megoldani?

ilyesmivel próbálkozok, de mivel nem ad ki írási hibát így gondolom még csak meg se próbálja hozzáadni

import os

spec_python_ver = input('add python dir: (eg.: Python39) write here: ')

scripts_dir = os.path.join(os.environ['LOCALAPPDATA'], f'Programs\\Python\\{spec_python_ver}\\Scripts\\')
python_dir = os.path.join(os.environ['LOCALAPPDATA'], f'Programs\\Python\\{spec_python_ver}\\')

dirs_to_add = [scripts_dir, python_dir]
for directory in dirs_to_add:
if directory not in os.environ['PATH']:
os.environ['PATH'] += os.pathsep + directory
print(f"'{directory}' added to PATH")
else:
print(f"'{directory}' already in PATH")

print("\nUpdated PATH:")
print(os.environ['PATH'])

[ Szerkesztve ]

(#4252) sh4d0w válasza Hege1234 (#4251) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Kornyezeti valtozokat dictionary-kent kell kezelni Python alatt, tehat az ertek, amit be akarsz allitani, string kell, hogy legyen.

Viszont amihez admin jog kell - eleg rohejes lenne, ha egy ilyen egyszeru scripttel meg tudnad kerulni - azt vagy adminkent inditod, vagy UAC promptot kapsz.

https://www.coreinfinity.tech

(#4253) sztanozs válasza Hege1234 (#4251) üzenetére


sztanozs
veterán

User Path valtozohoz nem kell admin jog. Miert nem adod hozza kezzel (vagy CMD fajllal)?
Ha nincs python a path-on, akkor hogy futtatod ezt a python fajlt?

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4254) Hege1234 válasza sztanozs (#4253) üzenetére


Hege1234
addikt

Ha nincs python a path-on, akkor hogy futtatod ezt a python fajlt?

hát erre valóban nem gondoltam, így hogy nálam az már hozzá van adva a path-hoz :B

és akkor egy cmd-vel vagy inkább egy .bat fájlt használva megoldható lenne?

@echo off

set /p spec_python_ver=add python dir: (eg.: Python39) write here:

set "scripts_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\Scripts\"
set "python_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\"

echo scripts_dir: %scripts_dir%
echo python_dir: %python_dir%

így az útvonalat megkapom, de batch-el mivel tudom hozzáadni közvetlenül a PATH-hoz?

(#4255) sztanozs válasza Hege1234 (#4254) üzenetére


sztanozs
veterán

setx + kozvetlen registry mokolas:
@echo off
WHERE /q python.exe
IF ERRORLEVEL 1 (
set /p spec_python_ver=add python dir: (eg.: Python39) write here:
set "scripts_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\Scripts\"
set "python_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\"
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set
userPATH=%B
setx PATH "%userPATH%;%scripts_dir%;%python_dir%"
)

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4256) sztanozs válasza sztanozs (#4255) üzenetére


sztanozs
veterán

Es a rendszerben (szokott helyen) talahato python installaciok listazasa:
WHERE /R %LOCALAPPDATA% python.exe

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4257) Hege1234 válasza sztanozs (#4255) üzenetére


Hege1234
addikt

nálam a script csak ezt adja ki:
write was unexpected at this time.

(#4258) sztanozs válasza Hege1234 (#4257) üzenetére


sztanozs
veterán

mert ezt
add python dir: (eg.: Python39) write here:
be kell helyettesiteni, pl:
Python39

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4259) Hege1234 válasza sztanozs (#4258) üzenetére


Hege1234
addikt

okés be is írtam a scriptbe
Python38

így most már kilistázza mik az elérhető python exe-k, de a python-t beírva
nem ismeri fel a python 3.8.5-öt
csak a py-vel működik ami a Python 3.12.2-es verziót hozza be

(#4260) sztanozs válasza Hege1234 (#4259) üzenetére


sztanozs
veterán

Ez az elsot felveszi es belerakja a path-ba:
@ECHO off
setlocal EnableDelayedExpansion
WHERE /q python.exe
IF ERRORLEVEL 1 (
WHERE /q /R %LOCALAPPDATA% python.exe
IF ERRORLEVEL 1 (
ECHO Nincs installalt python a APPDATA LOCAL-ban!
EXIT /b -1
) ELSE (
ECHO Van installalt python a APPDATA LOCAL-ban!
)
CALL :sub
set "scripts_dir=!py_path!Scripts\"
set "python_dir=!py_path!"
for /f "usebackq tokens=2,*" %%A in (`reg query HKCU\Environment /v PATH`) do set userPATH=%%B
ECHO "!userPATH!;!scripts_dir!;!python_dir!"
setx PATH "%userPATH%;%scripts_dir%;%python_dir%"
)
GOTO :eof

:sub
FOR /f "tokens=*" %%A IN ('WHERE /R %LOCALAPPDATA% python.exe') do (
REM ECHO %%A
SET "py_path=%%~dpA"
EXIT /b
)
GOTO :eof

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4261) sztanozs válasza Hege1234 (#4259) üzenetére


sztanozs
veterán

Masreszt, ahhoz, hogy a path env valtozas eletbe lepjen ujra kell inditani a command line-t.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4262) Hege1234 válasza sztanozs (#4261) üzenetére


Hege1234
addikt

köszi!

azt már sikerült elérni, hogy amik ott úgy nagyon hosszan egy sorban vannak
oda "beleírja"
ahogy itt van a képen:
[kép1]
viszont valami miatt nálam ez így nem elég hozzá :F

csak, ha így van manuálisan új sorokba írva:
[kép2]
(amúgy script-el lehetne új sorba írni?)

és úgy akkor már működik:
[kép3]

(#4263) sztanozs válasza Hege1234 (#4262) üzenetére


sztanozs
veterán

Nekem ott alapbol minden uj sorban van. Kezzel irtad azt oda be?

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4264) Hege1234 válasza sztanozs (#4263) üzenetére


Hege1234
addikt

nem én írtam egy sorba, és fura is volt így ömlesztve látni

viszont nem gondoltam, hogy problémát okozhatna mert
kb. minden powershell-es line-ba amit találtam a PATH-hoz az elválasztás az ez volt hozzá ;

$env:Path -split ';'

( ha új sorba van írva akkor nem si kerül a végére a ; )

(#4265) J0shu4M1ll3r


J0shu4M1ll3r
senior tag

Sziasztok!
Az alábbi csodálatos háziban kérnék segítséget:
Próbáltam felírni a sorokat, átlókat egyenletként, de bele is zavarodtam, és chatgpt se nagyon segít, vagy nálam vacakol a VS, mert semmi megoldást nem ad vissza.
Mi a jó megközelítése?
Jelenleg itt tartok:
Elneveztem a pontokat betűkkel és beírtam a fix számokat:
1. 1+C+F+H=26
2. 1+D+G+K=26
3. 2+C+D+E=26
4. H+I+7+K=26
5. 2+F+I+L=26
6. E+4+7+L=26
Ezekből kijött pár betűnek a meghatározása, mintha egy nagy egyenletrendszer lenne, de itt elakadtam.
Köszi!

"There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."

(#4266) axioma válasza J0shu4M1ll3r (#4265) üzenetére


axioma
veterán

Szerintem itt brute force [vagy max elagazas-korlatozassal megoldasra ha mar advanced] gondoltak. A 8! nem olyan nagy szam... plane hogy a pythonhoz lib van ami legeneralja a permutaciokat ;-) de gondolom az inkabb a feladat lenyege lenne.

[ Szerkesztve ]

(#4267) kovisoft válasza J0shu4M1ll3r (#4265) üzenetére


kovisoft
őstag

Ha valamilyen backtrack-szerű algoritmust akarsz használni, akkor a számokat ne egyedi változókban tárold, hanem pl. tömbben, és akkor egységesen tudod tölteni őket. A feltételeidet ugyanúgy fel tudod írni pl. 2+X[0]+X[1]+X[2]+X[3]==26 formában,

De talán az axioma által is említett permutáció generálás a legegyszerűbb: az itertools modul permutations([3,5,6,8,9,10,11,12]) függvényével le tudod generálni a maradék nyolc szám összes permutációját, ezek közül kell azokat kiválogatni, ahol minden vonalra teljesül, hogy a számok összege 26.

(#4268) J0shu4M1ll3r


J0shu4M1ll3r
senior tag

Próbálom értelmezni, de nem megy :D
Látnom kéne a teljes kódot, hogy ki tudjam sakkozni, hogy mi miért történik, de azt sem tudom, hogyan fogjak hozzá. :(

"There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."

(#4269) sztanozs válasza J0shu4M1ll3r (#4265) üzenetére


sztanozs
veterán

1. szamozd be a cellakat 0-11-ig:
2. csinalj egy teljes permutaciot:
3. meccseld a permutaciot a szabalyra:
doboz[0] == 1
doboz[3] == 4
doboz[5] == 7
doboz[10] == 2

es az z osszegre vonatkozo logika:
doboz[0] + doboz[1] + doboz[11] == 26
doboz[1] + doboz[2] + doboz[3] == 26
doboz[3] + doboz[4] + doboz[5] == 26
doboz[5] + doboz[6] + doboz[7] == 26
doboz[7] + doboz[8] + doboz[9] == 26
doboz[9] + doboz[11] + doboz[11] == 26

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4270) kovisoft válasza J0shu4M1ll3r (#4268) üzenetére


kovisoft
őstag

Permutációval roppant egyszerű a dolog. Egy ciklusban végigmész a permutations([...]) által visszaadott listán, aminek mindegy eleme egy mondjuk x tömb lesz az aktuális permutációval. Az x tömb a nyolc ismeretlen számot jelöli (x[0]-tól x[7]-ig). Ezekre beteszel 6 darab if-et (olyasmit, mint amit te is felírtál, csak nem egyedi változókkal, hanem a tömb elemeivel), amiben ellenőrzöd az egyes vonalak mentén az összegeket. Ha bármelyik nem 26, akkor continue. A legvégén pedig kiiratod az x-et.

Házi feladatokat nem igazán oldunk meg más helyett, de ha van bármi kód kezdeményed, és elakadsz, akkor szívesen segítünk.

Szerk: Csak egy megjegyzés, hogy ne zavarjunk még jobban össze: én a fix számokat nem vettem bele a permutációba, mint sztanozs. Én csak a 8 ismeretlent permutálnám.

[ Szerkesztve ]

(#4271) sztanozs válasza sztanozs (#4269) üzenetére


sztanozs
veterán

ja, haromszogeket szamoltam, nem oldalakat, azert nem adott ki eredmenyt :DDD

from itertools import permutations

def szabaly(doboz):
a, d, f, k = 1, 4, 7, 2
b, c, e, g, h, i, j, l = doboz
return 26 == a + b + d + e == c + d + f + g == e +f + h + i == g + h + j + k == i + j + l + a

def print_doboz(doboz):
a, d, f, k = 1, 4, 7, 2
b, c, e, g, h, i, j, l = doboz
print(f" {a:>2}\n"
f"{k:>2} {l:>2} {b:>2} {c:>2}\n"
f" {j:>2} {d:>2}\n"
f"{i:>2} {h:>2} {f:>2} {e:>2}\n"
f" {g:>2}\n")
dobozok = permutations([3, 5, 6, 8, 9, 10, 11, 12])
eredmeny = filter(szabaly, dobozok)
for doboz in eredmeny:
print_doboz(doboz)
print()

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#4272) J0shu4M1ll3r válasza sztanozs (#4269) üzenetére


J0shu4M1ll3r
senior tag

Köszi, valami ilyesmire gondoltam én is, de lehet a == is elmaradt, megnézem.

@ kovisoft:
igen, mert gondolom több megoldás is, lehet, pedig sudokuzni szeretek, de ezen csak pislogtam :D
Nem is kérném, hogy más csinálja meg, pont, hogy meg akarom érteni, hogy mi miért van, de lehet nem fog olyan gyorsan menni, mint gondoltam.
A fix számok kellenek, mert azok adottak, és ezek ismeretében kell kiszámolni a maradék helyekre a lehetséges számokat, így legalább nem lesz 800 megoldás :D

"There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."

Copyright © 2000-2024 PROHARDVER Informatikai Kft.