附加清单

时间:2016-08-02 05:14:53

标签: python list append

我试图追加"结果"变量到一个名为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)

非常感谢任何帮助。

4 个答案:

答案 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: '))

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

答案 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]