为什么在我的python代码中没有执行这个while循环

2024-05-15 11:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python制作一个tic-tac-toe游戏。讲师说使用while循环来验证输入是否为数字。由于某种原因,while循环似乎不起作用。它跳过while循环,直接跳到return int(choice)。我试图添加一个图像,但我不确定它是否有效。如果你看不到,请告诉我

enter image description here


Tags: 图像image游戏returnhere数字descriptiontic
3条回答

从屏幕截图上看,您似乎在检查内置方法is_digit是否在while循环中False,而不是is_digit()的实际输出。唯一的改变应该是将第30行更改为:

while choice.isdigit() == False: 

进入while循环的Python方式如下:

while not choice.isdigit():
    choice = input("Please enter a number (0-10): ")

这将产生True,如果choice不是整数,您将访问while循环,当choice是整数时,则not choice.isdigit()条件将是False,您将退出while循环

因此,问题出现在代码的这一行-:

while choice.isdigit == False :

问题在于,您假设此条件所做的是,它将对choice变量执行的isdigit函数的结果与==运算符右侧的假布尔值进行比较

但是,由于您从未调用函数isdigit,并且只引用了一个点,因此它将函数isdigit与布尔值False进行比较,而布尔值False永远不会为True,这使得while循环根本不执行。 i、 你这样做-:

while function == boolean : execute_my_code...

然而,您需要做的是-:

while func_returned_boolean == boolean : execute_my_code...

因此,您只想通过在函数名前面添加两个圆括号[()],来调用您引用的函数。 这将调用函数,现在比较的是函数返回的布尔值与假布尔值

像这样-:

while choice.isdigit() == False : execute_my_code... # Instead of while choice.isdigit == False.

同样,正如@Niel Godfrey Ponciano所指出的,由于isdigit函数的返回值是一个布尔值,因此使用not关键字检查它是否为True,也就是说,如果它是False,那么-:

while not choice.isdigit() : execute_my_code...

由于不必使用== False子句,因此使用not关键字可以节省大量工作

相关问题 更多 >