簡體   English   中英

附加清單

[英]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: '))

resultstr (字符串)。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM