如何阻止程序因 python 中的值错误而崩溃?
how to stop your program crashing from value error in python?
我正在制作一个 D&D 类型的骰子滚筒,用户可以选择要滚动的骰子。我让程序运行,但我希望每次输入非整数时程序都不会崩溃。发生的具体错误是值错误。
还想提出如何改进程序的建议。目标是做到
"bug free" 然后为它创建 GUI。
我尝试用 try 和 except 修改程序,但失败了。
还测试了我是否可以通过添加更多 If 语句来解决问题
print("choose a die: \n 1 = d4 \n 2 = d6 \n 3 = d8 \n 4 = d10 \n 5 = d12 \n 6 = d20 \n 7 = d100 \n or 0 to quit program")
u_input = int(input())
while u_input != 0:
if u_input == 1:
print("rolled a: [", random.randrange(1, 5), "] on a d4")
u_input = int(input())
elif u_input == 2:
print("rolled a: [", random.randrange(1, 7), "] on a d6")
u_input = int(input())
elif u_input == 3:
print("rolled a: [", random.randrange(1, 9), "] on a d8")
u_input = int(input())
elif u_input == 4:
print("rolled a: [", random.randrange(1, 11), "] on a d10")
u_input = int(input())
elif u_input == 5:
print("rolled a: [", random.randrange(1, 13), "] on a d12")
u_input = int(input())
elif u_input == 6:
print("rolled a: [", random.randrange(1, 21), "] on a d20")
u_input = int(input())
elif u_input == 7:
print("rolled a: [", random.randrange(1, 101), "] on a d100")
u_input = int(input())
按预期滚动结果,但当输入不是整数时崩溃。
您可以检查输入的类型以避免获取值错误。
检查下面的代码:
import random
print("choose a die: \n 1 = d4 \n 2 = d6 \n 3 = d8 \n 4 = d10 \n 5 = d12 \n 6 = d20 \n 7 = d100 \n or 0 to quit program")
#Initialization out of any of the expected values
u_input = 500
while u_input != 0:
u_input = input()
if type(u_input) != int:
print("Entered input is not of int type")
u_input = 500
continue
if u_input == 1:
print("rolled a: [", random.randrange(1, 5), "] on a d4")
elif u_input == 2:
print("rolled a: [", random.randrange(1, 7), "] on a d6")
elif u_input == 3:
print("rolled a: [", random.randrange(1, 9), "] on a d8")
elif u_input == 4:
print("rolled a: [", random.randrange(1, 11), "] on a d10")
elif u_input == 5:
print("rolled a: [", random.randrange(1, 13), "] on a d12")
elif u_input == 6:
print("rolled a: [", random.randrange(1, 21), "] on a d20")
elif u_input == 7:
print("rolled a: [", random.randrange(1, 101), "] on a d100")
我正在制作一个 D&D 类型的骰子滚筒,用户可以选择要滚动的骰子。我让程序运行,但我希望每次输入非整数时程序都不会崩溃。发生的具体错误是值错误。
还想提出如何改进程序的建议。目标是做到 "bug free" 然后为它创建 GUI。
我尝试用 try 和 except 修改程序,但失败了。 还测试了我是否可以通过添加更多 If 语句来解决问题
print("choose a die: \n 1 = d4 \n 2 = d6 \n 3 = d8 \n 4 = d10 \n 5 = d12 \n 6 = d20 \n 7 = d100 \n or 0 to quit program")
u_input = int(input())
while u_input != 0:
if u_input == 1:
print("rolled a: [", random.randrange(1, 5), "] on a d4")
u_input = int(input())
elif u_input == 2:
print("rolled a: [", random.randrange(1, 7), "] on a d6")
u_input = int(input())
elif u_input == 3:
print("rolled a: [", random.randrange(1, 9), "] on a d8")
u_input = int(input())
elif u_input == 4:
print("rolled a: [", random.randrange(1, 11), "] on a d10")
u_input = int(input())
elif u_input == 5:
print("rolled a: [", random.randrange(1, 13), "] on a d12")
u_input = int(input())
elif u_input == 6:
print("rolled a: [", random.randrange(1, 21), "] on a d20")
u_input = int(input())
elif u_input == 7:
print("rolled a: [", random.randrange(1, 101), "] on a d100")
u_input = int(input())
按预期滚动结果,但当输入不是整数时崩溃。
您可以检查输入的类型以避免获取值错误。
检查下面的代码:
import random
print("choose a die: \n 1 = d4 \n 2 = d6 \n 3 = d8 \n 4 = d10 \n 5 = d12 \n 6 = d20 \n 7 = d100 \n or 0 to quit program")
#Initialization out of any of the expected values
u_input = 500
while u_input != 0:
u_input = input()
if type(u_input) != int:
print("Entered input is not of int type")
u_input = 500
continue
if u_input == 1:
print("rolled a: [", random.randrange(1, 5), "] on a d4")
elif u_input == 2:
print("rolled a: [", random.randrange(1, 7), "] on a d6")
elif u_input == 3:
print("rolled a: [", random.randrange(1, 9), "] on a d8")
elif u_input == 4:
print("rolled a: [", random.randrange(1, 11), "] on a d10")
elif u_input == 5:
print("rolled a: [", random.randrange(1, 13), "] on a d12")
elif u_input == 6:
print("rolled a: [", random.randrange(1, 21), "] on a d20")
elif u_input == 7:
print("rolled a: [", random.randrange(1, 101), "] on a d100")