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也会尝试将列表compnew_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