在以下脚本中:
# shows multiplication table of a number upto that number
import time
while True:
num = input("Enter number: ")
try:
def mult():
for i in range(1, int(num)+1):
print(str(i) + " x " + num + " = " + str(i * int(num)))
except ValueError:
print("Please enter a number")
continue
mult()
time.sleep(2)
如果num
的输入不是整数值,我希望显示“请输入数字” ,因为{{1} }放在ValueError
中。
但是,try / except块似乎不起作用,因为在输入非数字字符串时,它会显示Python的Traceback错误:
int(num)
为什么错误处理不起作用?
答案 0 :(得分:0)
您可以只删除mult()函数定义,因为它似乎并不特别重要(如果需要的话,请纠正我)。
您的代码将如下所示:
import time
while True:
num = input("Enter number: ")
try:
for i in range(1, int(num)+1):
print(str(i) + " x " + num + " = " + str(i * int(num)))
except ValueError:
print("Please enter a number")
continue
time.sleep(2)
这最初不起作用的原因是因为您的try语句是围绕定义包装的,而不是围绕mult()函数的实际调用的包装。这意味着当它运行时,它会尝试定义一个名为mult
的函数,并且可以正常工作。但是,当它实际上在第13行调用该函数时,由于没有try语句,导致它中断。
答案 1 :(得分:0)
为什么要在尝试中定义多重?
try将try放入函数中。现在,您正在尝试检查是否可以创建函数mult。成功后,您将尝试调用它(在那里您会遇到问题)。
`
# shows multiplication table of a number upto that number
import time
while True:
num = input("Enter number: ")
def mult():
try:
for i in range(1, int(num)+1):
print(str(i) + " x " + num + " = " + str(i * int(num)))
except ValueError:
print("Please enter a number")
continue
mult()
time.sleep(2)`
这应该可行,另外请注意,如果您想在函数中输入一个值, 应该像这样完成: def mult(数据)
称为: 多('数据')