2024-05-15 11:55:41 发布
网友
我正在尝试用Python制作一个tic-tac-toe游戏。讲师说使用while循环来验证输入是否为数字。由于某种原因,while循环似乎不起作用。它跳过while循环,直接跳到return int(choice)。我试图添加一个图像,但我不确定它是否有效。如果你看不到,请告诉我
return int(choice)
enter image description here
从屏幕截图上看,您似乎在检查内置方法is_digit是否在while循环中False,而不是is_digit()的实际输出。唯一的改变应该是将第30行更改为:
is_digit
False
is_digit()
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循环
True
choice
not choice.isdigit()
因此,问题出现在代码的这一行-:
while choice.isdigit == False :
问题在于,您假设此条件所做的是,它将对choice变量执行的isdigit函数的结果与==运算符右侧的假布尔值进行比较
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关键字可以节省大量工作
== False
从屏幕截图上看,您似乎在检查内置方法
is_digit
是否在while循环中False
,而不是is_digit()
的实际输出。唯一的改变应该是将第30行更改为:进入while循环的Python方式如下:
这将产生
True
,如果choice
不是整数,您将访问while循环,当choice
是整数时,则not choice.isdigit()
条件将是False
,您将退出while循环因此,问题出现在代码的这一行-:
问题在于,您假设此条件所做的是,它将对choice变量执行的
isdigit
函数的结果与==
运算符右侧的假布尔值进行比较但是,由于您从未调用函数isdigit,并且只引用了一个点,因此它将函数isdigit与布尔值False进行比较,而布尔值False永远不会为True,这使得while循环根本不执行。 i、 你这样做-:
while function == boolean : execute_my_code...
然而,您需要做的是-:
while func_returned_boolean == boolean : execute_my_code...
因此,您只想通过在函数名前面添加两个圆括号[
()
],来调用您引用的函数。 这将调用函数,现在比较的是函数返回的布尔值与假布尔值像这样-:
同样,正如@Niel Godfrey Ponciano所指出的,由于
isdigit
函数的返回值是一个布尔值,因此使用not关键字检查它是否为True
,也就是说,如果它是False
,那么-:由于不必使用
== False
子句,因此使用not关键字可以节省大量工作相关问题 更多 >
编程相关推荐