Я использую Python 3.7.1.
Я представлю свои ожидания, чтобы быть понятнее читателю.
Я ввожу выбор через input()
, и если я написал цикл while
, это делается для того, чтобы снова спросить меня, введу ли я неправильную «команду» (неправильный ввод).
Итак, давайте посмотрим на script.py ниже:
champ_choix=""
while champ_choix!="1" or champ_choix!="2":
champ_choix=input("Pour cat_course tapez 1\nPour hippodrome tapez 2\n")
print("L'input est : {}".format(champ_choix))#print the input is:
print("le type de l'input est: {}".format(type(champ_choix)))#print the type is:
if champ_choix=="1":
##CHOIX DE LA COLLECTION##
collection_num=""
while collection_num!="1" or collection_num!="2":
collection_num=input("Pour la collection geny_rapp tapez 1\nPour la collection geny_cotes tapez 2\n")
#Do some instructions useless to show
if champ_choix=="2":
subprocess.run(['scrapy crawl test_shell -a nom_prix=True'],shell=True)
#if choice is "2" launch a spider with scrapy
Мне нужно уточнить, что я пытался сначала без отступа от условий if
, указанных выше, и с использованием других слов условий: if champ_choix=="1": .... elif champ_choix=="2":... else: pass
, но это все равно не работает.
Проблема в том, что когда я запускаю скрипт в терминале, он дает мне:
(base) avy@avy-Moi:~/folder$ python script.py
Pour cat_course tapez 1
Pour hippodrome tapez 2
2 <- the input I entered
L'input est : 2
le type de l'input est: <class 'str'>
Pour cat_course tapez 1
Pour hippodrome tapez 2
Как видите, он действительно создает правильный вход: 2, и это правильный тип ввода: str. Но это делает бесконечный цикл, и я не понимаю почему, потому что с учетом этого урока это так же.