问题:编写一个程序,从输入流中读取具有给定列的表。列为名称、金额、债务。然后过滤表(条件:债务等于0)。之后,将债务增加42%,然后打印结果
我是Python的初学者,已经尝试过多次,但仍然无法解决这个问题。非常感谢您的帮助
Input:
10
Tatiana Santos 411889 36881
Yuvraj Holden 121877 0
Theia Nicholson 783887 591951
Raife Padilla 445511 0
Hamaad Millington 818507 276592
Maksim Whitehead 310884 0
Iosif Portillo 773233 0
Lachlan Daniels 115100 0
Evie-Grace Reese 545083 0
Ashlea Cooper 68771 0
Required Output:
Tatiana Santos 411889 52371.02
Theia Nicholson 783887 840570.42
Hamaad Millington 818507 392760.64
My Solution:
def input_data(n):
tup = []
if n>0:
tup.append(tuple(map(str,input().split(" "))))
input_data(n-1) #I know there's a problem in the recursion. I am not #doing anything with the return value. Please help
return tup
def filtertuple(* tup): # After debugged I got to know at this point only one row is passed to function
newtuple = filter(lambda i: i[2]!=0,tup)
return tuple(newtuple)
def increasedebt(newtuple):
newtuple1 = tuple(map(lambda i:(i[2])*(142/100)),newtuple)
return (newtuple1)
def output_data():
n=int(input())
return n
print(increasedebt(filtertuple(input_data(output_data()))))
Error: Traceback (most recent call last):
File "C:\Users\msi-pc\PycharmProjects\ProgramminglanguageTask3\main.py",
line 28, in <module>
print(increasedebt(filtertuple(input_data(output_data()))))
File "C:\Users\msi-pc\PycharmProjects\ProgramminglanguageTask3\main.py",
line 14, in filtertuple
return tuple(newtuple)
File "C:\Users\msi-pc\PycharmProjects\ProgramminglanguageTask3\main.py",
line 12, in <lambda>
newtuple = filter(lambda i: i[2] != 0, tup)
IndexError: list index out of range
我发现代码如何将数据从
input_data
传递到filtertuple
有两个主要问题第一个问题是,您可以使递归工作。如果您坚持使用递归,还需要使基本大小写返回适当的值(或者为
input_data
中的递归出错,您从未对递归调用的结果执行任何操作,因此只有第一行输入数据包含在最终返回值中。递归并不是解决这个问题的理想方法,循环会更简单、更干净。但是如果您使用返回给您的值做一些事情,比如^{None
添加额外的检查),例如空列表(或元组)第二个问题是
filtertuple
的编写需要许多参数,但您只传递了一个参数。因此tup
将始终是一个包含实际参数的1元组。如果您希望一个参数是元组列表(或者元组的元组,我不确定您的目标是什么API),那么不应该在参数列表中使用*tup
,只要tup
没有星号就好了。您可以调用filtertuple(*input_data(...))
,这将把元组解压成许多参数,但是如果函数只是将它们重新打包成tup
,那就太傻了代码中可能还有其他问题,我只关注了
input_data
和filtertuple
的交互,因为这就是您要问的以下是我对解决您的问题的看法:
我确实发现了一个额外的问题,在我重命名为
adjust_debt
的函数中,括号错误相关问题 更多 >
编程相关推荐