Zwiększająca się zmienna

0

Witam,

jak mógłbym zrobić aby zmienna w zmiennej się zmieniała w czasie pętli?

przykład:

for i in range(x):
#i jak zrobić aby program w następnej pętli zmienił p=a1 na p=a2? dodając do tej jedynki w nazwie zmiennej a1 +1
p=a1

Na prawdę nie mam pojęcia jak to zrobić.
chce osiągnąć aby p dynamicznie się zmieniało co pętle że w pierwszej pętli jest p=a1 a w drugiej p=a2 a w trzeciej p=a3 i jak to zrobię ifami że if powtórzenie == 1:
p=a1 to wtedy nie będzie to uniwersalne że jak pętla będzie miała 100 to będzie musiał robić 100 if a zawsze długość pętli się zmienia zależnie od reszty programu

cały fragment kodu:

Przykładowy tekst

tekst = """
Ilosc produktów w zamówieniu: 17
firma klienta: DOSTAL

Jeżeli szerokość jest poniżej 605mm płaskownik:
gatunek: C45
cięcie: taśma
rodzaj wyrobu: płaskownik
grubość: 20
dlugość: 500
ilosc sztuk produktu: 1
szerokość: 200
obróbka: brak
"""

Rozdziel tekst na linie

linie = tekst.split('\n')

Inicjalizuj słownik do przechowywania zmiennych

zmienne = {}

Iteruj przez linie i przetwarzaj je

aktualna_zmienna = None
licznik_zmiennych = 1
ignoruj_linie = False # Flaga do ignorowania określonych linii

for linia in linie:
if ':' in linia:
klucz, wartosc = linia.split(':', 1)
klucz = klucz.strip()
wartosc = wartosc.strip()
if not klucz.startswith("Jeżeli") and not klucz.startswith("płaskownik"):
if ignoruj_linie:
ignoruj_linie = False
continue
aktualna_zmienna = f'a{licznik_zmiennych}'
zmienne[aktualna_zmienna] = wartosc
licznik_zmiennych += 1
else:
if klucz.startswith("Jeżeli szerokość jest poniżej 605mm płaskownik:") or klucz.startswith("jeżeli klient nie podaje innych wymiarów to takie:"):
ignoruj_linie = True

Wyświetl wynik

for klucz, wartosc in zmienne.items():
# Przypisz wartość do zmiennej
exec(f"{klucz} = '{wartosc}'")

I Teraz dałem takie coś ale chce aby to było robione w p i te p by się zmieniało co print bo nigdy nie wiadomo ile z zmiennej tekst będzie zmiennych a1, a2...

print(f"a1: {a1}")

print(f"a2: {a2}")

0
VisiateAI napisał(a):

jak mógłbym zrobić aby zmienna w zmiennej się zmieniała w czasie pętli?

Co, w czym, co zrobiło? ;|

Daj więcej przykładów kodu i lepiej opisz jaki jest Twój spodziewany efekt, bo nie rozumiem co chcesz osiagnąć.

0

Ok chce osiągnąć aby p dynamicznie się zmieniało co pętle że w pierwszej pętli jest p=a1 a w drugiej p=a2 a w trzeciej p=a3 i jak to zrobię ifami że if powtórzenie == 1:
p=a1 to wtedy nie będzie to uniwersalne że jak pętla będzie miała 100 to będzie musiał robić 100 if a zawsze długość pętli się zmienia zależnie od reszty programu

1

chyba po prostu powinieneś zobaczyć na listy w pythonie, bo to brzmi tak, jakbyś potrzebował użyć listy, ale nie wiedział, że listy istnieją (które są pythonowym odpowiednikiem tablic z innych języków).

0

Możesz sobie równanie zrobić f stringiem i evalem wywołać, a do lokalnych zmiennych odwoływać się przez krotkę locals()

for i in range(10):
    locals()[f'a{i}'] = i
    p = eval(f'a{i}')
    print(f'p == {p}')
1
VisiateAI napisał(a):

Ok chce osiągnąć aby p dynamicznie się zmieniało co pętle że w pierwszej pętli jest p=a1 a w drugiej p=a2 a w trzeciej p=a3 i jak to zrobię ifami że if powtórzenie == 1:
p=a1 to wtedy nie będzie to uniwersalne że jak pętla będzie miała 100 to będzie musiał robić 100 if a zawsze długość pętli się zmienia zależnie od reszty programu

Coś takiego chcesz?

a = ['monday', 'tuesday', 'wednesday', 'thursday']

for i in range(x):
  p = a[i]
0

ale nie istnieje zmienna (a) tylko zmienne a1, a2, a3... i x zależy od ilości tych a... i chce aby w trakcie pętli p=a1 zmieniało się w p=a2 itp... a zawsze nie wiadomo ile jest tych a...

0
VisiateAI napisał(a):

ale nie istnieje zmienna (a) tylko zmienne a1, a2, a3... i x zależy od ilości tych a...

Możesz dać jakiś szerszy kontekst tego? Albo pokazać przykład kodu?

Czemu nie możesz przerobić tych zmiennych a1, a2, a3 na tablice?

W ogóle - co Ty tak na prawdę próbujesz zrobić?

0
tumor napisał(a):

Możesz sobie równanie zrobić f stringiem i evalem wywołać, a do lokalnych zmiennych odwoływać się przez krotkę locals()

eval, Apage!

1

Jeszcze masz do wyboru słowniki, wtedy możesz sklejać klucz:

a = {'a1': 'kotek', 'a2': 'piesek', 'a3': 'malpka'}
print(a['a' + str(1)]) # printuje a["a1"] czyli kotek
2

Co chcesz zrobić, konkretnie. Jaki problem chcesz rozwiązać.

3

Najsensowniejsze rozwiązanie — nie miej osobnych zmiennych, tylko jedną tablicę/krotkę, jak Ci proponują wyżej.

Bezsensowne rozwiązanie — użyj artystycznie evala i cierp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1