需要使用"zip()"函数的编码帮助



我正在为我正在使用的类编写代码。除了最后一步,我已经完成了所有的工作,并正在寻找一些关于如何完成它的指导或建议。到目前为止,我已经在下面列出了方向和我的代码:

方向:

生成两个随机列表,其中包含1000个介于1和6之间的随机整数,称为die1die2。循环浏览两个列表(使用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

最新更新