提问者:小点点

蟒蛇的骰子滚轮


我正试图用python做一个掷骰子程序,给定用户在边、骰子和掷骰子上的输入来掷骰子。目前这段代码或多或少是有效的,但是我遇到的问题是,假设我让< code>3个骰子滚动< code>3次,骰子有< code>6个面。

我的代码显示如下:

Roll #1 6
Roll #2 5
Roll #3 1
Roll #4 6
Roll #5 4
Roll #6 6
Roll #7 3
Roll #8 1
Roll #9 1

当我需要它显示为:

Roll #1 6 5 1
Roll #2 6 4 6
Roll #3 3 1 1

这是我目前为止的代码。我的猜测是,它与我的参数和参数为空有关?我不完全确定。以下是我的代码:

import random

def main ():
    rolls = get_rolls()
    dice = get_dice()
    sides = get_sides()

    nrolls = 1
    for r in range (rolls):
        for d in range (dice):
            print ('Roll #', nrolls, random.randint(1,sides))
            nrolls += 1 

def get_rolls():
    rolls = int(input('Enter the number of rolls: '))
    while rolls <= 0:
        print ('Number of rolls must be higher than 0')
        rolls = int (input('Enter the number of rolls: '))
    return rolls

def get_dice():
    dice = int (input('Enter the number of dice being rolled: '))
    while dice < 1 or 5 < dice:
        print ('Number of dice being rolled must be between 1 and 5')
        dice = int (input('Enter the number of dice being rolled: '))
    return dice ()

def get_sides():
    sides = int (input('Enter the number of sides on the dice: '))
    while sides < 2 or 36 < sides:
        print ('Number of sides on dice must be between 2 and 36')
        sides = int (input('Enter the number of sides on the dice: '))
    return sides


main()        

共3个答案

匿名用户

您的问题是您将print语句放在内部for循环中,这意味着您打印结果的次数过多,以及增量nroll的次数过多。

nrolls = 1
for r in range (rolls):
    roll = []
    for d in range (dice):
        roll.append(random.randint(1,sides))
    print('Roll #', nrolls, *roll)
    nrolls += 1
>Roll # 1 3 3 1
>Roll # 2 1 5 2
>Roll # 3 6 5 4

匿名用户

为了对您的代码进行最少的修改,请将其更改为:

for r in range (rolls):
    print('Roll #', nrolls, end=' ')
    for d in range (dice):
        print (random.randint(1,sides), end=' ')
    print()
    nrolls += 1

此外,下面一行会引发一个错误。

return dice ()

将其更改为:

return dice

匿名用户

import random

def dice_roll(n):
dicelist = ['\u2680','\u2681','\u2682','\u2683','\u2684','\u2685']
dicevalue = {(dicelist[0]): 1, (dicelist[1]): 2, (dicelist[2]): 3, 
(dicelist[3]): 4, (dicelist[4]): 5,(dicelist[5]): 6}
result = 0
visualresult = " "

for i in range(n): 
    random_roll = random.sample((dicelist), 1)
    str1 = str(random_roll)
    str2 = str1.replace("'"," ")
    str3 = str2.replace("[", " ")
    str4 = str3.replace(']',' ')
    str5 = str4.strip()
    valueresultindex = dicelist.index(str5)
    valuelist = list(dicevalue.values())
    newvalueindex = valuelist[valueresultindex]
    result = result + newvalueindex
    visualresult = visualresult + str4
    i = i + 1

rolledstring = "You rolled this much: "    
print(visualresult)
print((rolledstring) + str(result))

Numofdice = int(input("Please enter the amount of dice you would like to 
roll: "))

if Numofdice >= 1 and Numofdice <= 6:
    ValidRollAmount = True
else:
    ValidRollAmount = False

while ValidRollAmount == False:
    Numofdice = int(input("Invalid amount of dice please re-enter: "))    
    if Numofdice >= 1 and Numofdice <= 6:
        ValidRollAmount = True

while ValidRollAmount == True:
    dice_roll(Numofdice)
    ValidRollAmount = False