python - pętla while

python - pętla while
MI
  • Rejestracja:około 8 lat
  • Ostatnio:około 3 lata
  • Postów:18
0

Cześć. Mam pytanie. Powiedzmy że mam taką funkcję i pętlę:

Kopiuj
def abc:
   b = 1
   a = {}
   while b != 0:
        b = int(input('Podaj cyfrę. jesli podasz wszystkie wpisz 0'))
        if b != 0:
                a[v] = []

Można zdefiniować jakoś tą funkcję, aby zamiast podawania 0, można zrobić że napiszę koniec lub nacisnę enter bez wpisywania i zadziała tak j/w?
Dzięki za pomoc.

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Tak, można - po prostu nie rzutuj od razu na inta.


MI
  • Rejestracja:około 8 lat
  • Ostatnio:około 3 lata
  • Postów:18
0

Próbowałem i nie działa.. ;/

Kopiuj
def abc:
   b = 1
   a = {}
   while b != 0:
        b = input('Podaj cyfrę. jesli podasz wszystkie wpisz 0')
        if b != 0:
                a[v] = []

O to chodzi tak?
Jak napisać,aby wiedział ze wpiszę koniec lub enter?

edytowany 2x, ostatnio: mikolosek
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Skoro w b trzymasz już teraz ciąg znaków, to uwaga, bo Cię zaskoczę:
if b == "koniec": :-P


MI
  • Rejestracja:około 8 lat
  • Ostatnio:około 3 lata
  • Postów:18
0

Właśnie u mnie się gubi że najpierw daję cyfry, potem piszę koniec i nie tworzy tego co ma. ;D

Edit: może nie tyle co się gubi tylko nie kończy pętli

edytowany 1x, ostatnio: mikolosek
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Huh? Wrzuć jakiś kod pokazujący problem, ponieważ ciężko mi sobie wyobrazić, o co może chodzić.


CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 lata
  • Postów:231
0
Kopiuj
b = input('Podaj cyfrę. jesli podasz wszystkie wpisz 0')

wczytujesz znak, więc pętla while powinna wyglądać tak:

Kopiuj
while b != '0' or b != 'koniec' or b != '':

chociaż przez to b != 'koniec' mogą być teraz błędy, dlatego polecam lekko zmodyfikować pętlę.

edytowany 1x, ostatnio: czaffik
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 3 godziny
1

A może tak:

Kopiuj
while 1:
    try:
        a = int (input("podaj liczbe"))
        if a == 0:
            break
        print(a)
    except:
        break
print("koniec")

Jeśli w bloku try wystąpi błąd (w tym przypadku to co wpisałeś nie jest liczbą, albo dałeś samo enter), to wykona się except, czyli wyjście z pętli break-iem

MI
  • Rejestracja:około 8 lat
  • Ostatnio:około 3 lata
  • Postów:18
0
sig napisał(a):

A może tak:

Kopiuj
while 1:
    try:
        a = int (input("podaj liczbe"))
        if a == 0:
            break
        print(a)
    except:
        break
print("koniec")

Jeśli w bloku try wystąpi błąd (w tym przypadku to co wpisałeś nie jest liczbą, albo dałeś samo enter), to wykona się except, czyli wyjście z pętli break-iem

Dzięki bardzo za pomoc. Udało się. :)

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.