如何停止你的程序在Python从数值错误而崩溃? [关闭]

问题描述 投票:0回答:1

我正在做d&d型骰子辊与用户的选项,选择什么样的死滚动。我得到的程序工作,但我希望程序每次进入的东西是不是一个整数的时间不会崩溃。发生特定的错误是值错误。

另外还想建议,如何更好的计划。目标是使“没有缺陷”,后来为它创建GUI。

我试着尝试,除了修补程序,但没有成功。也只需添加更多的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())

作为罗尔斯假定的结果,但是当输入为别的不是整数崩溃。

python-3.x dice
1个回答
0
投票

您可以检查输入的类型,以避免使值误差。

检查下面的代码:

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")
© www.soinside.com 2019 - 2024. All rights reserved.