繁体   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