Форум сайта python.su
0
Здравствуйте! Недавно только изучать Питон начал, не могу понять
1) какой код лучше
2) почему код 1 работает криво
Код 1. Проблемма в том, что первый вопрос “Хотите печенье?” он обрабатывает, если нажимаю Да - перебрасывает на след вопрос, если “Нет” - выводит “Ой зря, ой зря”. На абракадабру он повторяет вопрос)
НО! когда я отвечаю на него “Да” то при переходе на след вопрос “Ты что, забыл что я тебе ее уже отдал? Да/Нет ” - что бы я не набирал, он выдвет мне “Больше конкретики”. Почему так? Почему первый цикл он работает норм, а на втором аналогичном - нет.
print ("Привет") A=input("Хотите печенье? Да/Нет ") while A!="Да" and A!="Нет": print("Больше конкретики") A=input("Хотите печенье? Да/Нет ") if A=="Нет": print("Ой зря, ой зря..") if A=="Да": А = input("Ты что, забыл что я тебе ее уже отдал? Да/Нет ") while A!="Да" and A!="Нет": print("Больше конкретики") А = input("Ты что, забыл что я тебе ее уже отдал? Да/Нет ") if A=="Нет": print("Ну а тогда чего просишь?") if A=="Да": print("Ну вот я напомнил") print("Пока") input()
print ("Привет") b=1 while b==1: b=0 b1=0 while b==0: A=input("Хотите печенье? Да/Нет ") if A=="Да": while b==0: А = input("Ты что, забыл что я тебе ее уже отдал? Да/Нет ") if A=="Да": print("Ну вот я напомнил") b=1 elif A=="Нет": print("Ну а тогда чего просишь?") b=1 else: print ("Больше конкретики") elif A=="Нет": print("Ой зря, ой зря..") b=1 else: print ("Больше конкретики") while b1==0: A=input("Еще? Да/Нет ") if A=="Да": b1=1 elif A=="Нет": print ("") b1=1 b=0 else: print ("Больше конкретики") print("Пока") input()
Офлайн
20
Вам форум уже подсказал) Посмотрите как выделены A
Отредактировано noob_saibot (Фев. 7, 2014 11:56:07)
Офлайн
0
Да, а почему так происходит? Ведь я получается переприсваиваю А новое значение!
Как я понимаю, проблему можно решить вводя каждый раз новую переменную?
И какой код грамотней?)
Офлайн
19
Подсвечено потому что это не A англиийское, а А русское. Поэтому не надо называть переменные 1 буквой.
Офлайн
2
SLaVeRS9
print ("Привет") A=input("Хотите печенье? Да/Нет ") while A!="Да" and A!="Нет": print("Больше конкретики") A=input("Хотите печенье? Да/Нет ") if A=="Нет": print("Ой зря, ой зря..") if A=="Да": A = input("Ты что, забыл что я тебе ее уже отдал? Да/Нет ") while A!="Да" and A!="Нет": print("Больше конкретики") A = input("Ты что, забыл что я тебе ее уже отдал? Да/Нет ") if A=="Нет": print("Ну а тогда чего просишь?") elif A=="Да": print("Ну вот я напомнил") print("Пока")
И какой код грамотней?)этот, ибо читается гораздо приятнее, не перегружен лишними переменными, имеется сборка мусора. да и вообще соответствует общей идеологии языка: чем проще и понятнее - тем лучше)
Да, а почему так происходит? Ведь я получается переприсваиваю А новое значение!надо не забывать переключать раскладку, и вводить переменные в латинице (анлгицкими буквами).
Как я понимаю, проблему можно решить вводя каждый раз новую переменную?
Офлайн
0
Огромное всем спасибо!
Разобрался
Офлайн
19
лучше писать такwhile A!="Да" and A!="Нет"
while A not in ["Да", "Нет"]
while A.upper() not in ["ДА", "НЕТ"]
Отредактировано PanovSergey (Фев. 9, 2014 07:44:51)
Офлайн
0
PanovSergeyВозьму на заметку! В учебнике не видел таких вариантов, может позже появятся
Офлайн