【发布时间】:2019-05-11 10:24:16
【问题描述】:
我编写了以下代码块。该代码在语法上是正确的,但有一些我找不到的逻辑错误。该代码接受名称、作者并根据用户输入分配一个要读取的布尔值。 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)
【问题讨论】:
-
开头:"if has_read not in [n, y]: if has_read equals y"…怎么会是不是“y”而等于“y”……?
-
您的 while 循环条件导致无法进入循环。您要求用户输入 y 或 n,但如果他们输入了其他内容,您只能进入循环!
-
我猜如果你得到的不是
y或n,你想重新要求用户输入一些东西。一旦你得到那个答案,你就可以退出 while 循环并标记你的书。 -
你可能想要 " 而不是 y/n: 再次询问用户",然后在
while之外执行if。
标签: python python-3.x loops boolean