我试着做一个简单的函数,在这个例子中掷硬币 n 次,五十 (50) 次,然后将结果存储到列表“ my_list
”中。使用for loop
.
如果抛掷的结果不是 25 正面和 25 反面(即 24-26 的比率),它应该删除my_list
包含结果的列表的内容并再次循环抛掷 50 次,直到结果正好是 25-25。
功能:
- 打印空列表。
- 如果 my_list.count(1) 为 25,则启动仅结束的 while 循环。
- 使用 random(1,2) 掷硬币。
- 将结果输入到 my_list。
- 如果 my_list.count(1) 不完全是 25,那么代码应该删除列表的内容并重复 while 循环。
- - 编码:latin-1 - -
import random
def coin_tosser():
my_list = []
# check if there is more or less 1 (heads) in the list
# if there is more or less number ones in the list, loop
# "while". If "coin tosser" throws exactly 25 heads and
# 25 tails, then "while my_list.count(1) != 25:" turns True
while my_list.count(1) != 25: # check if there is more or less 1 (heads) in the list
print "Throwing heads and tails:"
for i in range(50):
toss = random.randint(int(1),int(2)) #tried this also without int() = (1,2)
my_list.append(toss)
if my_list.count(1) < 25 or my_list.count(1) > 25:
my_list.remove(1) # remove number ones (heads) from the list
my_list.remove(2) # remove number twos (tails) from the list
# after loop is finished (25 number ones in the list), print following:
print "Heads is in the list",
print my_list.count(1), "times."
print "Tails is in the list",
print my_list.count(2), "times."
# print
print my_list
coin_tosser()
问题
当我尝试使用 my_list.remove(1) 时,它不会从列表中删除任何内容。如果我将 my_list.remove(1) 替换为 my_list.remove('test') 并将 'test' 添加到 my_list 中,则如果不满足条件(应该如此),程序将删除 'test'。
为什么它不删除数字?我不确定这些“1”和“2”是存储为列表int
还是列表str
。我的猜测是在str
我做错了什么?