[英]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.