我试图追加"结果"变量到一个名为total_winnings的新列表中,但是我收到错误。
我设法成功完成了total_stake但是当我尝试对total_winnings
使用相同的方法时出错。
我认为这是因为"结果"变量需要字符串输入吗?
while True:
add_selection =raw_input("Would you like to add a selection?")
if add_selection == "Yes":
selection = raw_input('Horse: ')
print selection
stake = float(raw_input('Stake: '))
print stake
odds = float(raw_input('Odds: '))
print odds
result = (raw_input('Result: '))
if result == "Win":
print stake * odds
elif result == "Lose":
print 0 * odds
book = raw_input('Book: ')
print book
my_list=[selection,stake,odds,result,book]
inputs.append(my_list)
total_stake=[]
for my_list in inputs:
total_stake.append(my_list[1])
print sum(total_stake)
total_winnings = []
for my_list in inputs:
total_winnings.append(my_list[3])
print sum(total_winnings)
def looks_good(inputs):
for i in inputs:
print i
elif add_selection == "No":
break
looks_good(inputs)
非常感谢任何帮助。
答案 0 :(得分:0)
您得到的错误是
TypeError: unsupported operand type(s) for +: 'int' and 'str'
问题是您目前在"Win"
中存储字符串"Lose"
和my_list[3]
,而您的意思是存储stake * odds
。当您执行函数sum(my_list[3])
时,它会给出错误,因为它无法汇总字符串。
要修复错误,请更改if else
语句:
if result == "Win":
print stake * odds
elif result == "Lose":
print 0 * odds
为:
if result == "Win":
print stake * odds
result = stake * odds
elif result == "Lose":
print 0 * odds
result = 0
答案 1 :(得分:0)
result = (raw_input('Result: '))
result
是str
(字符串)。
my_list=[selection,stake,odds,result,book]
...
for my_list in inputs:
total_winnings.append(my_list[3])
my_list[3]
是result
,是str
。如果您打印total_winnings
,我认为您会看到类似["Win", "Lose", "Lose"]
的内容。
print sum(total_winnings)
现在你正在尝试sum
这些字符串。这没有意义,大概它会给你这个错误:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我认为你打算做这样的事情:
result = (raw_input('Result: '))
if result == "Win":
result = stake * odds
elif result == "Lose":
result = 0
答案 2 :(得分:0)
我可以看到您的代码存在几个问题。
首先,定义一个函数(" def look_good(输入)") 循环内不是一个好主意。除非你在尝试 做一些比较棘手的功能定义 应该在你的代码的顶层之前 其他的东西。
其次,变量名为"输入"用于 " inputs.append(my_list)"在定义之前 任何地方。
因为您使用相同的名称("输入") 作为looks_good()函数的参数, 你正在建立一个存在的情况 两个不同的"输入"变量 - 一个内部 功能和外部 - 几乎是 当然是个坏主意。使用不同的名称 对于那些不同的可变范围可能有所帮助。
首先解决这些问题,然后看看你的问题 错误信息更清楚。如果它还没有 工作,我建议投入大量的" print" 陈述,看看究竟发生了什么。
答案 3 :(得分:0)
my_list [3]包含Win of Lose,即字符串值并对其进行求和不会起作用。你可以做这样的事情
result = (raw_input('Result: '))
result_val = stake*odds
if result == "Win":
print result_val
elif result == "Lose":
print 0
在添加到my_list时,只需添加result_val而不是结果或添加结果
my_list=[selection,stake,odds,result_val,book]