我正在使用 while 语句构建一个函数,一旦 while 语句结束,它什么也不做,尽管有更多的代码



我正在构建一个函数,但该函数没有按应有的方式工作。

def correct_number():
wPlayer = input("Choose a number. ")
while wPlayer is not int:
notint = 0
try:
wPlayer = int(wPlayer)
except ValueError:
print("You didn't enter a number.")
wPlayer = input("Choose a number. ")
notint = 1
if (notint != 1):
if wPlayer <= 0:
print('Please enter a number bigger than zero.')
wPlayer = input("Choose a number. ")
wPlayer += 12
if wPlayer <= 82:
wPlayer = 82
print("Your number is now 82.")
try:
num = 12 - wPlayer
if num < -70:
wPlayer -= num
elif num > -70:
wPlayer -= 1
print("Your number is now", wPlayer)
correct_number()
print('The Program Has Ended.')

当我运行这个程序时,我满足 while 语句的要求,它不会打印任何其他内容,即使是函数调用正下方的print。这是为什么呢?我做错了什么?

while语句中的条件存在问题:

while wPlayer is not int:

您是否正在尝试检查 wPlayer 变量是否为int类型?如果是这样,这不是执行该类型检查的方法。

你想要的是:

while not isinstance(wPlayer, int):

程序随着该更改运行到最后。

但是,我还应该提到以下不正确的Python:

try:
num = 12 - wPlayer
except num < -70:
wPlayer -= num
except num > -70:
wPlayer -= 1

执行不会进入这except块。except用于在引发Exception对象时捕获这些对象,例如当您尝试访问包含 2 个项目的列表中的列表索引 100 时:

my_list = ["pizza", "ice_cream"]
try:
index_one_hundred = my_list[100]
except IndexError:
print("Whoops, you got an IndexError!")

这些except块应该只是ifelif块(因此,您也不需要try块(:

num = 12 - wPlayer
if num < -70:
wPlayer -= num
elif num > -70:
wPlayer -= 1

最新更新