цикл ввода да / нет (Python 3) - PullRequest
0 голосов
/ 07 июня 2019

Это код:

quiz = str(input("would you like to answer some questions \n choose y/n"))

quiz = quiz.lower()
while quiz != 'y' or quiz != 'n':
    print("please choose 'y' or 'n'")
    input("y/n?")

Это часть моего кода, который я пытался использовать str() даже без or операнда, он не работает, кстати, я использую python v3.7.

1) Если вы можете исправить код

2) Если вы знаете, что какой-то другой код более эффективен, скажите

Примечание. Если введен y. # например ошибка " ValueError: float: Argument: y is not a number "

Ответы [ 3 ]

1 голос
/ 07 июня 2019

Ввод ищет целое число, необработанный ввод получит строку. Попробуйте использовать

raw_input(y/n)

Это должно очистить ValueError

0 голосов
/ 07 июня 2019
//This code is for explanation 

quiz = str(input("would you like to answer some questions \n choose y/n"))

quiz = quiz.lower()

while quiz != 'y' and quiz != 'n': //here you are using != that will result false this logic works fine with !

//while quiz == 'y' or quiz == 'n': //will work for or

print("please choose 'y' or 'n'")

input("y/n?")

//this code will work 

quiz = str(input("would you like to answer some questions \n choose y/n"))

quiz = quiz.lower()

while quiz != 'y' and quiz != 'n':

   print("please choose 'y' or 'n'")

   input("y/n?")

Надеюсь, это поможет.

Возможно, вас заинтересуют блок-схемы или алгоритмы, перейдите по этой ссылке: https://www.edrawsoft.com/explain-algorithm-flowchart.php

Вам также может быть интересно узнать больше о pythonперейдите по этой ссылке: https://www.python.org/about/gettingstarted/

Спасибо.

0 голосов
/ 07 июня 2019

Может, как-то так?

def check_input(predicate, msg, error_string="Illegal Input"):
    while True:
        result = input(msg).strip()
        if predicate(result):
            return result
        print(error_string)

result = check_input(lambda x: x in ['yes', 'no'],
                                   'Yes or no?')
print(result)

украдено у здесь

...