我正在构建一个函数,但该函数没有按应有的方式工作。
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
块应该只是if
和elif
块(因此,您也不需要try
块(:
num = 12 - wPlayer
if num < -70:
wPlayer -= num
elif num > -70:
wPlayer -= 1