我希望通过在数字旁边添加符号来显示每个可能的随机数的生成次数。但是它将符号放在数字下面的新行上:
Dice rolled:
You rolled 2 and 4
Roll again [y|n]? n
Number Frequency:
1
2
x
3
4
x
5
6
如何让它在数字旁边的同一行显示符号?
import random
diceCount = [0,0,0,0,0,0,0]
roll='y'
while roll=='y':
die1=random.randint(1,6)
die2=random.randint(1,6)
diceCount[die1] = diceCount[die1] + 1
diceCount[die2] = diceCount[die2] + 1
print('Dice rolled:')
print('You rolled',die1,'and',die2)
if roll=='y':
roll=input('\nRoll again [y|n]? ')
while roll!='y' and roll!='n':
roll=input("Please enter either 'y' or 'n': ")
if roll=='n':
print('\nFace Freqeuncy:')
index=1
while (index<len(diceCount)):
print(index)
for number in range (diceCount[index]):
print(' x')
index+=1
答案 0 :(得分:2)
在Python3中,您可以使用可选参数end
删除换行符;
print(index, end="")
我假设您也希望所有x
也在同一行上,在这种情况下,对print(' x', end="");
执行相同操作并在循环后添加换行符。
答案 1 :(得分:1)
除了Joachim发布的内容之外,您还可以使用collections.Counter
:
from collections import Counter
rolls = []
roll = 'y'
while roll=='y':
die1=random.randint(1,6)
die2=random.randint(1,6)
rolls.append(die1)
rolls.append(die2)
print('Dice rolled:')
print('You rolled',die1,'and',die2)
if roll=='y':
roll=input('\nRoll again [y|n]? ')
while roll!='y' and roll!='n':
roll=input("Please enter either 'y' or 'n': ")
counted_rolls = Counter(rolls)
for i range(1,7):
print("{} {}".format(i,'x'*counted_rolls.get(i,0)))
答案 2 :(得分:1)
试试这个:
我创建了一个滚动骰子类,您可以在其中自定义每个滚轴和两侧的骰子数量,以及跟踪滚动。
import random
from collections import defaultdict
class roller():
def __init__(self, number_of_dice=2, dice_sides=6):
self.dice = defaultdict(dict)
for die in range(number_of_dice):
self.dice[die]['sides'] = dice_sides
self.dice[die]['count'] = dict((k,0) for k in range(1, dice_sides+1))
def roll(self, times=1):
print ("Rolling the Dice %d time(s):" % times)
total = 0
for time in range(times):
roll_total = 0
print ("Roll %d" % (time+1))
for die, stats in self.dice.items():
result = random.randint(1, stats['sides'])
roll_total += result
stats['count'][result] += 1
print (" Dice %s, sides: %s, result: %s" % (die, stats['sides'], result))
print ("Roll %d total: %s" % (time+1, roll_total))
total += roll_total
print ("Total result: %s" % total)
def stats(self):
print ("Roll Statistics:")
for die, stats in self.dice.items():
print (" Dice %s, sides: %s" % (die, stats['sides']))
for value, count in stats['count'].items():
print (" %s: %s times" % (value, count))
使用它:
>>> a = roller()
>>> a.roll(4)
Rolling the Dice 4 time(s):
Roll 1
Dice 0, sides: 6, result: 6
Dice 1, sides: 6, result: 3
Roll 1 total: 9
Roll 2
Dice 0, sides: 6, result: 3
Dice 1, sides: 6, result: 3
Roll 2 total: 6
Roll 3
Dice 0, sides: 6, result: 1
Dice 1, sides: 6, result: 6
Roll 3 total: 7
Roll 4
Dice 0, sides: 6, result: 5
Dice 1, sides: 6, result: 4
Roll 4 total: 9
Total result: 31
>>> a.stats()
Roll Statistics:
Dice 0, sides: 6
1: 1 times
2: 0 times
3: 1 times
4: 0 times
5: 1 times
6: 1 times
Dice 1, sides: 6
1: 0 times
2: 0 times
3: 2 times
4: 1 times
5: 0 times
6: 1 times
答案 3 :(得分:0)
您必须修改循环才能正确输出。如果循环没有提前退出,则访问for循环的else子句。
while (index<len(diceCount)):
print(index,end="") #let the next print appear on same line
for number in range (diceCount[index]):
print(' x',end="") #print the correct number of x's on the same line
print() #we now need to print a newline
index+=1
示例:
Dice rolled: You rolled 1 and 5 Roll again [y|n]? n Face Freqeuncy: 1 x 2 3 4 5 x 6 Dice rolled: You rolled 6 and 6 Roll again [y|n]? y Dice rolled: You rolled 3 and 4 Roll again [y|n]? n Face Freqeuncy: 1 2 3 x 4 x 5 6 x x