Логическая ошибка в операторе while при использовании с оператором или - PullRequest
0 голосов
/ 10 декабря 2018

Я написал следующий блок кода.Код правильный синтаксис, но есть логическая ошибка, которую я не могу найти.Код принимает имя, автора и назначает значение bool для чтения на основе пользовательского ввода.В секции while есть логическая ошибка, из-за которой интерпретатор никогда не попадает в цикл while, и, следовательно, функция add_book завершается ошибкой, так как read не имеет назначенного значения.

name = input("Title: ").lower()
author = input("Author: ").lower()
has_read = input("Mark as Read (y/n): ").lower()
while has_read not in ['n', 'y']:
    if has_read == 'y':
        read = True
    else:
        read = False
    add_book(name, author, read)      

1 Ответ

0 голосов
/ 10 декабря 2018

Вам, вероятно, нужно будет повторно спросить пользователя, не дают ли он действительный ввод.Может быть, что-то вроде этого:

name = input("Title: ").lower()
author = input("Author: ").lower()
valid = False
while not valid:
    has_read = input("Mark as Read (y/n): ").lower()
    if had_read in ['n', 'y']:
        valid = True
        if has_read == 'y':
            read = True
        else:
            read = False
        add_book(name, author, read)   
...