Jestem więc nowy w programowaniu i pisałem jakiś kod treningowy (Python 3.6):

while True:
    print('Hello Steve, what is the password?')
    password = input()
    if password != '1234':
        continue
    print('Access granted')

Problemem, który mam, jest to, że mimo że wpisuję poprawne hasło, pętla jest kontynuowana. Pomóż mi dowiedzieć się, co zrobiłem źle?

2
sntovas 24 czerwiec 2017, 16:54

4 odpowiedzi

Najlepsza odpowiedź

continue pominą resztę bieżącej rundy w pętli, a następnie pętla rozpocznie się:

>>> i = 0
>>> while i < 5:
...     i += 1
...     if i == 3:
...         continue
...     print(i)
...
1
2
4
5
>>>

Szukasz Słowo kluczowe break, który całkowicie wyjdzie z pętli:

>>> i = 0
>>> while i < 5:
...     i += 1
...     if i == 3:
...         break
...     print(i)
...
1
2
>>>

Zwróć jednak, że break całkowicie wyskoczy z pętli, a {x1}} jest ona po . Więc czego chcesz, to coś takiego:

while True:
    print('Hello Steve, what is the password?')
    password = input()
    if password == '1234':
        print('Access granted')
        break

Lub użyj stanu pętli while, chociaż wymaga to powtarzania password = ...:

password = input('Hello Steve, what is the password?\n')
while password != '1234':
    password = input('Hello Steve, what is the password?\n')
print('Access granted')
8
Markus Meskanen 24 czerwiec 2017, 14:23

Przede wszystkim używasz niewłaściwego operatora logicznego do porównania równości, to: != jest dla nie równa się ; I to == jest dla równa .

Po drugie, jak już się stwierdzili, powinieneś użyć break zamiast continue.

Zrobiłbym coś takiego:

print('Hello Steve!')
while True:
    password = input('Type your password: ')
    if password == '1234':
        print('Access granted')
        break
    else:
        print('Wrong password, try again')
0
gunslinger 24 czerwiec 2017, 14:17

Zmień break zamiast continue, powinien działać.

0
Stack 24 czerwiec 2017, 13:57

Spróbuj użyć instrukcji przerwy zamiast kontynuować. Twój kod powinien wyglądać tak

while True:
    print('Hello Steve, what is the password?')
    password = input()
    if password == '1234':
        print('Access granted')
        break
0
Ghufran Khan 20 kwiecień 2020, 00:08