Я хочу, чтобы вы выбрали конкретные действия, набрав 1 или 2, но это всегда будет запустите опцию «gen» (номер 1), даже если вы наберете 2.
while True:
a=int(input("pls choose what do you want to do.\n1=generates password \n2=acess saved passwords \n3=save passwords\nenter here:"))
if a == 1:
gen=True
break
if a==2:
see=True
break
if a==3:
save=True
break
else:
print('pls enter a valid respond\n----------------------------------------')
continue
if gen: #*<--it will always run this*
break
break
if see:
f = open("data.txt", "a")#*this did not run if typed '2'*
content=f.read()
f.close()
print(content)
Удалить разрыв из оператора if
while True:
a=int(input("pls choose what do you want to do.\n1=generates password \n2=acess saved passwords \n3=save passwords\nenter here:"))
if a == 1:
gen=True
break---> Your code break when you type 1
if a==2:
see=True
break ---> Your code break when you type 2
if a==3:
save=True
break
else:
print('pls enter a valid respond\n----------------------------------------')
continue
if gen: #*<--it will always run this*
break
break
if see:
f = open("data.txt", "a")#*this did not run if typed '2'*
content=f.read()
f.close()
print(content)`enter code here`
Не совсем понятно, о чем вы спрашиваете, но есть по крайней мере две вещи, которые вы должны изменить, чтобы выполнить то, что, как я полагаю, вы пытаетесь сделать. Во-первых, вы должны использовать elif
для условий a == 2
и a == 3
:
if a == 1:
gen = True
break
elif a == 2:
see = True
break
elif a == 3:
save = True
else:
print(...)
continue
...
Прямо сейчас кажется, что вы будете запрашивать действительный ответ всякий раз, когда ввод не равен 3 (включая случаи, когда он равен 1 или 2), но я полагаю, что вы хотите напечатать это утверждение только тогда, когда ввод не равен 1, 2 или 3. .
Во-вторых, причина, по которой f = open("data.txt"...)
не запустилась, заключается в том, что этот блок кода находится внутри цикла while. Всякий раз, когда часть кода заставляет программу выйти из цикла while (например, оператор break
), в остальной части цикла ничего не будет выполнено, включая блок if see:
.
Откуда вы знаете, что выполняется
break
внутри оператора if, а не тот, что сразу после него?