【发布时间】:2021-06-03 02:19:18
【问题描述】:
我必须在 python 中为用户创建一个列表,其中必须包含 0-10 之间的数字。应排除 '0' 和大于 9 的值。我已经使用“.isdigit()”编写了一个代码,以便消除单词,但由于控制台也在执行“0”,所以我被“0”消除所困扰。作为新手我尽力了。谁能帮帮我!?
def playerposition():
p_keys= list(range(1,10))
print('pick a position now: ')
postn=input('choose a position between (1-9): ')
while postn not in p_keys:
while postn.isdigit()==False or postn==0:
print('wrong input! enter again!: ')
postn=input('choose a position between (1-9): ')
print(int(postn))
print(p_keys)
break
playerposition()
执行的输出(控制台):
在(1-9)之间选择一个位置:你好 输入错误!再次输入!:
在 (1-9) 之间选择一个位置:1 1 [1、2、3、4、5、6、7、8、9]
运行单元 在 (1-9) 之间选择一个位置:0 0 [1, 2, 3, 4, 5, 6, 7, 8, 9] ---> 这是问题,其中 0 也被作为输入执行,而不是显示为 ('wrong input try again! : )
预期输出样本: 在 (1-9) 之间选择一个位置:0 输入错误!再次输入!: 在 (1-9) 之间选择一个位置:
【问题讨论】:
-
您可以将
post.isdigit()==False简化为not post.isdigit()。 -
input()返回字符串和"0"!=0这样就可以通过检查了。