我正在为我正在使用的类编写代码。除了最后一步,我已经完成了所有的工作,并正在寻找一些关于如何完成它的指导或建议。到目前为止,我已经在下面列出了方向和我的代码:
方向:
生成两个随机列表,其中包含1000个介于1和6之间的随机整数,称为
die1
和die2
。循环浏览两个列表(使用zip
(以成对返回骰子(就像你掷骰子一样(并计数:
- 轧制的7个(加上两个模具(
- 11的数字(加上两个骰子(。轧制的
- ";"蛇眼";轧制的
- 轧制的对数
我的代码:
# die1 list
die1 = [] # create an empty list
while len(die1) < 1000:
x = random.randint(1,6) # generate a random integer between 1 & 6
die1.append(x)
print(die1)
print()
# die2 list
die2 = [] # create an empty list
while len(die2) < 1000:
x = random.randint(1,6) # generate a random integer between 1 & 6
die2.append(x)
print(die2)
print()
# Zipping die1 & die2 into pairs
zipped = zip(die1,die2)
print(zipped)
print()
# Adding the Zipped Numbers Together
sum = [x+y for (x,y) in zipped]
print(sum)
print()
# Number of 7's rolled
counter1 = sum.count(7)
print('Appearances made by 7: ')
print(counter1)
print()
# Number of 11's rolled
counter2 = sum.count(11)
print('Appearances made by 11: ')
print(counter2)
print()
# Number of Snake Eyes rolled
counter3 = sum.count(2)
print('Appearances made by 2: ')
print(counter3)
print()
# Number of Pairs rolled
谢谢!
压缩2个列表时,需要计算多次x==y
counter4 = sum(1 for x, y in zip(die1, die2) if x == y)
建议
- 使用一个
for
循环来填充两个数组 - 不要对某个变量使用内置函数名
sum
- 在
zip
上循环一次并计算所有的counter*
:使用list.count()
每次都会迭代值
die1 = []
die2 = []
for _ in range(1000):
die1.append(random.randint(1, 6))
die2.append(random.randint(1, 6))
counter1, counter2, counter3, counter4 = 0, 0, 0, 0
for x, y in zip(die1, die2):
die_sum = x + y
if die_sum == 7:
counter1 += 1
elif die_sum == 11:
counter2 += 1
elif die_sum == 2:
counter3 += 1
if x == y:
counter4 += 1
print('Appearances made by 7:', counter1)
print('Appearances made by 11:', counter2)
print('Appearances made by 2:', counter3)
print('Appearances of pairs: ', counter4)
这样的东西怎么样?
import random
die1 = [random.randint(1, 6) for _ in range(1000)]
die2 = [random.randint(1, 6) for _ in range(1000)]
occurences = {}
die_zipped = zip(die1, die2)
for pair in die_zipped:
pair_sum = sum(pair)
occurences[pair_sum] = occurences.get(pair_sum, 0) + 1
total_pairs = sum(occurences.values())
print(f"{occurences[7] = }n{occurences[11] = }n{occurences[2] = }n{total_pairs = }")
输出:
occurences[7] = 152
occurences[11] = 47
occurences[2] = 24
total_pairs = 1000
嘿,我喜欢这个挑战!
这个代码怎么样?
from random import randint
list1,list2 =[ [randint(1,6) for i in range(1000)] for j in range(2)]
sums = [[item1+item2,item1==item2] for item1,item2 in zip(list1,list2)]
print("Snakes eyes",len([s for s in sums if s[0]==2]))
print("Pairs",len([s for s in sums if s[1]==True]))
print("Sevens",len([s for s in sums if s[0]==7]))
print("Elevens",len([s for s in sums if s[0]==11]))
pairs = list(zip(list1,list2))
print("Pairs",pairs)
样本结果:
Snakes eyes 32
Pairs 176
Sevens 145
Elevens 50
Snakes eyes 26
Pairs 151
Sevens 164
Elevens 57