PHP前端开发

如何根据输入多次运行一行代码?

百变鹏仔 1天前 #Python
文章标签 代码
问题内容

使用 python,我试图找到一种更快的方法来根据输入多次运行 randint,而不必写出每个输入的可能性。这是用于桌面游戏的骰子滚轮。代码如下

import randomfrom random import randinti1=input("what type of die?: ")i2=input("how many times?:")roll_again = "yes"while roll_again == "yes" or roll_again == "y":        if i1=="d6":        if i2=="1":            value1=randint(1,6)            print(value1)            roll_again = input("roll again?")        if i2=="2":            value1=randint(1,6)            value2=randint(1,6)            print(value1,value2)            roll_again = input("roll again?")        if i2=="3":            value1=randint(1,6)            value2=randint(1,6)            value3=randint(1,6)            print(value1,value2,value3)            roll_again = input("roll again?")        if i2=="4":            value1=randint(1,6)            value2=randint(1,6)            value3=randint(1,6)            value4=randint(1,6)            print(value1,value2,value3,value4)            roll_again = input("roll again?")        elif i1=="d4":        if i2=="1":            value1=randint(1,4)            print(value1)            roll_again = input("roll again?")        if i2=="2":            value1=randint(1,4)            value2=randint(1,4)            print(value1,value2)            roll_again = input("roll again?")        if i2=="3":            value1=randint(1,4)            value2=randint(1,4)            value3=randint(1,4)            print(value1,value2,value3)            roll_again = input("roll again?")        if i2=="4":            value1=randint(1,4)            value2=randint(1,4)            value3=randint(1,4)            value4=randint(1,4)            print(value1,value2,value3,value4)            roll_again = input("roll again?")

我正在继续添加其他骰子类型。基本上我希望能够输入 100 作为输入,它给我 100 randint ,而不必手动编码直到 if i2=="100" 但仍然保持不同的“ifs”。我还想打印滚动值的总和

对于第二部分,我尝试 print(sum(value1,value2)) 但由于 value1 和 value2 不是整数,我收到错误


正确答案


如果我理解正确的话,你想简化算法的操作。

我的代码工作原理如下。

用户输入骰子的类型(例如“d6”、“d10”)和投掷次数。程序检查输入的骰子类型是否正确(以“d”开头且骰子面数为正)。

如果数据正确,程序将使用给定的骰子生成给定的投掷次数,将结果保存到值列表中并打印它们。

程序计算获得的结果的总和并打印出来。

程序询问用户是否希望继续进行另一次抛出。

如果用户决定再掷一次,程序将重复生成和打印结果的过程。

如果用户输入不正确的数据(例如,骰子格式错误或投掷次数小于 1),程序将打印一条错误消息。

我假设您会修改此代码以满足您的需求

from random import randinti1 = input("Enter the type of dice (e.g., d6, d4): ")i2 = int(input("Enter the number of dice rolls: "))if i1.startswith("d") and i2 > 0:    dice_type = int(i1[1:])    values = []    for _ in range(i2):        values.append(randint(1, dice_type))    print(*values)    print("Sum:", sum(values))    roll_again = input("Roll again? (yes/no): ").lower()    while roll_again == "yes":        values = []        for _ in range(i2):            values.append(randint(1, dice_type))        print(*values)        print("Sum:", sum(values))        roll_again = input("Roll again? (yes/no): ").lower()else:    print("Invalid input. Please enter a valid dice type and number of rolls.")