首页 > 解决方案 > 与或运算符一起使用时,while 语句中的逻辑错误

问题描述

我编写了以下代码块。该代码在语法上是正确的,但有一些我找不到的逻辑错误。该代码采用名称、作者并根据用户输入分配一个要读取的布尔值。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)      

标签: pythonpython-3.xloopsboolean

解决方案


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

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)   

推荐阅读