如何阻止您的程序因python中的值错误而崩溃?

时间:2019-02-10 16:34:37

标签: python-3.x dice

我正在制造一种D&D型骰子滚轴,用户可以选择要滚动的骰子。我可以使程序正常工作,但是我希望每次输入非整数的程序都不会崩溃。发生的特定错误是“值错误”。

还希望提出有关如何改善程序的建议。目标是做到 “无错误”,然后为其创建GUI。

我尝试用try和except修改程序,但失败了。 还测试了是否可以通过仅添加更多的If语句来摆脱问题

const input = [1, 1, 2, 2, 3, 3, 4, 5];

const removeItems = (input, items) =>
{        
    return input.filter(function(x)
    {
        let i = this.findIndex(y => y === x);
        return i >= 0 ? (this.splice(i, 1), false) : true;
    }, items.slice());
}

console.log(removeItems(input, [1,2,3,4,5]));
console.log(removeItems(input, [1,2]));
console.log(removeItems(input, [1,99,44,5]));

按预期方式滚动结果,但是当输入不是整数时崩溃。

1 个答案:

答案 0 :(得分: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")