[英]Appending a list
我试图将“结果”变量附加到名为total_winnings的新列表中,但是我收到错误。
我设法成功完成了total_stake,但是当我尝试对total_winnings
使用相同的方法时出现错误。
我认为这是因为“result”变量需要字符串输入?
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)
任何帮助将不胜感激。
你得到的错误是
TypeError: unsupported operand type(s) for +: 'int' and 'str'
问题是你目前在my_list[3]
存储字符串"Win"
和"Lose"
,而你的意思是存储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
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
我可以看到你的代码有几个问题。
首先,在循环中定义函数(“def looks_good(输入)”)并不是一个好主意。 除非你试图做一些比较棘手的事情,否则在其他东西之前,函数定义应该在代码的顶层。
其次,名为“inputs”的变量在“inputs.append(my_list)”中使用,然后才能在任何地方定义。
由于您使用相同的名称(“输入”)作为look_good()函数的参数,因此您正在设置一种情况,其中有两个不同的“输入”变量 - 一个在函数内部,一个在外部 - 这几乎是当然是个坏主意。 为这些不同的变量范围使用不同的名称可能会有所帮助
首先解决这些问题,然后查看您的错误消息是否更清楚。 如果它仍然无法正常工作,我建议添加大量“打印”语句,以确切了解发生了什么。
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.