所以。。。代码做了我想让它做的事。虽然,据我所知,它似乎非常低效,我已经告诉它是。基本上,我掷2个骰子,所以它的范围从2到12(分别相加)。然后我会计算是否加起来2,3,4,等等。按照我的方法,我做了11个变量和11个if和elif语句,这些语句非常冗余,似乎效率低下。你知道吗
我不知道如何使它更有效,或者如果有一个更Python的方式做这件事。你知道吗
def distribution_of_rolls(amount: int) -> str:
count2 = ''
count3 = ''
count4 = ''
count5 = ''
count6 = ''
count7 = ''
count8 = ''
count9 = ''
count10 = ''
count11 = ''
count12 = ''
countList = [count2, count3, count4, count5, count6, count7, count8, count9, count10, count11, count12
]
resultStr = ''
for _ in range(amount):
roll = roll2dice()
if roll == 2:
countList[0] += '*'
elif roll == 3:
countList[1] += '*'
elif roll == 4:
countList[2] += '*'
elif roll == 5:
countList[3] += '*'
elif roll == 6:
countList[4] += '*'
elif roll == 7:
countList[5] += '*'
elif roll == 8:
countList[6] += '*'
elif roll == 9:
countList[7] += '*'
elif roll == 10:
countList[8] += '*'
elif roll == 11:
countList[9] += '*'
elif roll == 12:
countList[10] += '*'
for i in range(2, 13):
resultStr += (str(i) + ': ' + str(len(countList[i - 2])) + ' ' + countList[i - 2] + "\n")
print(resultStr)
distribution_of_rolls(200)
结果如下(没有问题,这是我想要的):
2: 3 ***
3: 11 ***********
4: 17 *****************
5: 18 ******************
6: 22 **********************
7: 37 *************************************
8: 32 ********************************
9: 23 ***********************
10: 15 ***************
11: 14 **************
12: 8 ********
使用
collections.Counter
可以提高效率相关问题 更多 >
编程相关推荐