当与or运算符一起使用时,while语句中出现逻辑错误

时间:2018-12-10 13:47:00

标签: python python-3.x loops boolean

我编写了以下代码块。该代码在语法上是正确的,但是存在一些我找不到的逻辑错误。该代码输入名称,作者,并根据用户输入分配要读取的bool值。 while循环部分存在一些逻辑错误,由于该解释器无法进入while循环,因此add_book函数失败,因为未分配读取值。

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 :(得分:1)

如果用户未提供有效输入,则可能需要重新询问用户。也许是这样的:

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)