我刚刚开始学习 Python,如果我在这里遗漏了任何明显的东西,我深表歉意。我正在尝试根据 Code Academy 上的问题创建轮盘游戏。我决定使用列表而不是 randomint,因为我想将 00 添加到列表中。这是我正在努力解决的第一件事,因为我使用 append 尝试添加 00,但它仅将其添加为 0。我正在努力解决的第二件事是修复此错误:类型错误:不支持的操作数类型为 %:'list' 和 'int'我的代码在下面,所以它是 roulette_number 部分不起作用,因为它来自列表,因此不被识别为 int。我们欢迎所有的建议!from random import seedfrom random import sample# seed random number generatorseed (1) # Seed is a reference to your random number so if you reference the same seed you will always get the same random number. Even having this randint doesn't make a difference. So in that case it doesn't matter what number you put in the brackets next to the seed?# prepare a sequencen = 1 sequenceroulette = [i for i in range(37)] * n #The sequence is starting from 0 to 36sequenceroulette.append(00) ## Try to work out how to add this as a double zero rather than one zeroprint (sequenceroulette)#select a subset without replacementsubset = sample(sequenceroulette,1) # we only want to pick 1 number a time from the listprint(subset)roulette_number = subsetprint (roulette_number)money = 100def roulette (Bet,Guess1, Guess2): if roulette_number % 2 == 0 and Guess1 == "Even" and Guess2 == "N/A": return (money - Bet) + (Bet * 2) elif roulette_number % 1 == 1 and Guess1 == "Odd" and Guess2 == "N/A": return (money - Bet) + (Bet * 2) elif roulette_number == Guess1 and Guess2 == "N/A": return (money - Bet) + (Bet *37) elif roulette_number == Guess1 or roulette_number == Guess2: return (money - Bet) + (Bet * 18.5) else: return moneyprint (roulette(10,"Even","N/A"))Python
3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
在 Python 中,保存为int. 如果您想存储这些,您需要将它们保存为字符串。
sequenceroulette.append('00')
关于你的TypeError
类型错误:不支持的操作数类型为 %:'list' 和 'int'
您不能在 和 的实例之间使用运算%符。listinteger
这是由于您如何从listwith 中提取一个数字;
subset = sample(sequenceroulette,1) #[8]
注意,sample()仍然返回你的结果,在一个list. 如果您将您的更新roulette_number为始终调用元素0,则可以解决此错误。
roulette_number = subset[0]
希望这会有所帮助,如果您想做更多,深入阅读您在此处遇到的一些问题是一些链接!
炎炎设计
TA贡献1808条经验 获得超4个赞
random.sample(population, k)
是一个返回长度为 k 的列表的方法。
所以,
sample(sequenceroulette,1)
将返回一个带有一个数字的列表。为了访问列表中的这个号码,您需要做
roulette_number = subset[0]
当您开始使用 Python 时,记住您使用的方法返回的数据类型很重要,因此您需要在代码中相应地使用它们:)
繁华开满天机
TA贡献1816条经验 获得超4个赞
替换这一行:
roulette_number = subset
经过:
roulette_number = subset[0]
由于子集如果一个值的列表,您必须获取它才能进行 % 操作
添加回答
举报
0/150
提交
取消
