Python If和elif循环未正确计算作为浮点输入的和

Python If和elif循环未正确计算作为浮点输入的和,python,Python,我做错了什么?提前谢谢你的帮助 返回语句应该在循环之后。当前代码在循环中运行一次,点击其中一个返回语句,然后退出。此外,mySum=depositions和mySum=drawings行并不是在做你想要做的事情,它们正在将mySum设置为[]。如果希望存款和取款成为交易列表,则代码如下所示: >>>account([33.98, -11.22, 23.23, -33.00]) [57.21, -44.22] 现在,如果用户输入语句([7,-5,2,3])该函数

我做错了什么?提前谢谢你的帮助

返回语句应该在循环之后。当前代码在循环中运行一次,点击其中一个返回语句,然后退出。此外,
mySum=depositions
mySum=drawings
行并不是在做你想要做的事情,它们正在将
mySum
设置为
[]
。如果希望
存款
取款
成为交易列表,则代码如下所示:

    >>>account([33.98, -11.22, 23.23, -33.00])
    [57.21, -44.22]
现在,如果用户输入
语句([7,-5,2,3])
该函数将返回一个元组
(12.0,[7.0,2.0,3.0],-5.0])

编辑 如果希望以正数列表而不是负数列表的形式获取取款,您可能需要更改取款。将(num)追加到
取款。追加(-num)


另外,考虑替换<代码> [Stand(i),用于事务中的I](<代码> > <代码> >(i)在事务中的i)/<代码>。区别在于第一个是列表理解,是建立列表的简写,而第二个是生成器表达式。生成器不建立列表,您几乎只将它们与

for
一起使用。生成器将以空启动,当调用新的\u事务中的
for num
时,生成器将只生成第一项并将
num
设置为它。然后,当循环的第二次迭代需要下一项时,生成器将生成第二项。生成器根据您的需要一次生成一个项目,而使用列表,您必须在进入
for
循环之前生成每个项目并将其全部存储在内存中。如果您的
事务
列表是,比如说,一百万个项目,这将是内存使用的一个巨大差异。

上校是对的……我的总和和取款不能在第二次迭代中使用,因为它们被返回,不再在内存中了……循环的问题是,根据我的知识,for循环只能使用整数进行迭代,但也许您可以在生成退出条件时使用它(就像iYour for循环只运行一次迭代,因为if语句的两边都是从函数返回的。我认为您的代码在这里不完整……如果没有“管道”,您无法从用户输入转到函数。)…mySum+=num TypeError:“float”对象不是iterableI也会尝试将列表comp
new_transactions=[float(i)for i in transactions]
更改为生成器表达式,因为在以下情况下不需要该列表:例如:
new_transactions=(float(i)for i in transactions)
@Jason我怀疑您正在执行:
语句(1.23)
或类似内容-您需要传入一个iterable,例如:
语句([1.23])
不,我在做语句([55.95,-18.67,55.56,-56.00,40.78])@Jason如果您准确复制/粘贴此代码,您将得到
(77.62,[55.95,55.56,40.78],-18.67,-56.0])
…请检查您是否正确复制了它。。。
    >>>account([33.98, -11.22, 23.23, -33.00])
    [57.21, -44.22]
def statement(transactions):
    new_transactions = [float(i) for i in transactions]
    deposits = []
    withdrawals = []
    mySum = 0
    for num in new_transactions:
        mySum += num
        if num >= 0:
            deposits.append(num)
        else:
            withdrawals.append(num)
    return mySum, deposits, withdrawals