当前位置: 首页 > 知识库问答 >
问题:

蟒蛇的骰子滚轮

姜正初
2023-03-14

我正试图用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个答案

养聪
2023-03-14
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
韩英锐
2023-03-14

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

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
韦棋
2023-03-14

您的问题是您将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
 类似资料:
  • 假设我有一些资源,我想在用python编写的aws lambda中的不同请求之间共享。我应该如何实现这一点? 是否有“启动后”挂钩,或者我应该在第一次调用时惰性地创建资源?“延迟初始化”的缺点是,它意味着一些请求会随机变慢,因为您选择了一个消费者来承担启动成本。 此外…这些资源会在lambda可执行文件被“冻结”后幸存下来吗? 本页https://docs.aws.amazon.com/lambd

  • 我正在运行Ubuntu 18.04。 我使用mysql连接器-python连接Python到MySQL。 我使用的是Python 3.6.7,并且已经安装了mysql连接器-python。 我已经安装了mysql连接器-python-py3_8.0.13-1ubuntu18.10_all.deb. 在运行Python脚本时,mysql。连接器模块似乎加载正确,但脚本在碰到光标时失败。next()具

  • 我需要在我的中添加一个新的目录位置,但问题是我使用的是一个全新安装的系统(Linux),其中尚未定义任何。我读过并使用过,我认为我很了解它,但我不知道当没有存在时会发生什么。 我不能附加到不存在的东西上,但我希望当前发现的所有重要库都能正常工作,因此要小心,我在Python中使用了来获取所有标准值。然后我为定义了一个-变量,包括我刚刚找到的所有节点,以及我的新目录。但是哇,很多东西都停止工作了!P

  • 我在创造游戏蛇和梯子。我使用一个游戏模式,允许你对着电脑玩。 您建议使用什么来创建此延迟?

  • 我正在尝试使用本教程从一个使用selenium and beautiful soup的站点提取房地产列表信息:https://medium.com/@ben.sturm/scraping-house-listing-data-using-Selenium-and-Beautiful Soup-1CBB94BA9492 目的是在找到“下一页”按钮之前收集第一页的所有href链接,导航到下一页并收集该

  • 我想定义一个返回树节点值列表的函数。列表按级别顺序排列(从上到下,从左到右),如果缺少孩子,则在其位置插入“无”。 这是二叉树实现