我正试图用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()
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
为了对您的代码进行最少的修改,请将其更改为:
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
您的问题是您将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链接,导航到下一页并收集该
我想定义一个返回树节点值列表的函数。列表按级别顺序排列(从上到下,从左到右),如果缺少孩子,则在其位置插入“无”。 这是二叉树实现