Dodanie zmiennych w iteracji

Dodanie zmiennych w iteracji
Piotr Mackowiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

Dla uproszczenia taki program w Pythonie

Kopiuj
  for x in range (0, 1000):
                globals()['amp_1_%02d' % x] = x
                globals()['amp_2_%02d' % x] = x

Czyli powstają zmienne globalne o nazwach od amp_1_0 do 1000 i amp_2_0 do 1000.
Teraz chciałbym w natępnej pętli "for" zsumować i wyświetlić wartość sumy wszystkich amp_1_0 do 1000 i amp_2_0 do 1000 "
W jaki sposób mam w pętli for podać naswę zmiennej inną w każdym obiegu pętli oczywiście?

SI
  • Rejestracja: dni
  • Ostatnio: dni
0

Globals() traktujesz jak zwykły słownik, masz tu wyświetlenie wszystkich tych "zmiennych", ograniczyłem do 10 żeby lepiej było widać

Kopiuj
for x in range (0, 10):
                globals()['amp_1_%02d' % x] = x
                globals()['amp_2_%02d' % x] = x
for x in globals().keys():
    print("zmienna", x, "ma wartość", globals()[x])
Piotr Mackowiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

OK, ale ja chcę nie tyle wyświetlić wszystkie globale ale zsumować wartość tylko globali amp_1_xx i amp_2_xx i potem wyświetlić ich wartość. Jak to mogę zrobić?

SI
  • Rejestracja: dni
  • Ostatnio: dni
1
Piotr Mackowiak napisał(a):

OK, ale ja chcę nie tyle wyświetlić wszystkie globale ale zsumować wartość tylko globali amp_1_xx i amp_2_xx i potem wyświetlić ich wartość. Jak to mogę zrobić?

łatwizna,

Kopiuj
seria1 = 0
seria2 = 0
for x in range (0, 10):
                globals()['amp_1_%02d' % x] = x
                globals()['amp_2_%02d' % x] = x
for x in globals().keys():
    if not "amp" in x:
        continue
    if x[4] == '1':
        print("prawie jak zmienna z serii 1 czyli ", x, "ma wartość", globals()[x])
        seria1 +=  globals()[x]
    if x[4] == '2':
        print("prawie jak zmienna z serii 2 czyli ", x, "ma wartość", globals()[x])
        seria2 +=  globals()[x]
print(seria1, seria2)
Piotr Mackowiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

No i w linii:

Kopiuj
print("prawie jak zmienna z serii 1 czyli", x, "ma wartość", globals()[x])

mam błąd

Kopiuj
SyntaxError: Non-ASCII character '\xc5' in file am.py on line 27, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

SI
  • Rejestracja: dni
  • Ostatnio: dni
1

Pewnie masz pythona2 (bez obsługi pl liter), pousuwaj "ogonki" z print() i będzie dobrze.

Piotr Mackowiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

OK, pousuwałem ogonki i jest OK. Dzięki Koledzy, działa poprawnie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.