100+Python挑战性编程练习系列 -- day 5
Question 16
使用列表解析将列表中的每个奇数平方。该列表由逗号分隔的数字序列输入。
假设向程序提供以下输入:
1,2,3,4,5,6,7,8,9 然后,输出应为:
1,9,25,49,81 方法1
lst = [str(int(i)**2) for i in input().split(',') if int(i) % 2] print(",".join(lst)) 方法2
seq = input().split(',') lst = [int(i) for i in seq] def flt(i): #Define a filter function return i % 2 != 0 result_l = [str(i * i) for i in filter(flt,lst)] print(",".join(result_l)) Question 17
编写一个程序,根据控制台输入的交易日志计算银行账户的净金额。事务日志格式如下:
D 100 W 200 D表示存款,W表示取款。
假设向程序提供以下输入:
D 300 D 300 W 200 D 100 然后,输出应为:
500 方法1
total = 0 while True: s = input().split() if not s: # break if the string is empty break cm,num = map(str,s) # two inputs are distributed in cm and num in string data type if cm=='D': total+=int(num) if cm=='W': total-=int(num) print(total) 方法2
lst = [] while True: x = input() if len(x)==0: break lst.append(x) balance = 0 for item in lst: if 'D' in item: balance += int(item.strip('D ')) if 'W' in item: balance -= int(item.strip('W ')) print(balance) 方法3
money = 0 while 1: trans = input().split(' ') if trans[0] == 'D': money = money + int(trans[1]) elif trans[0] == 'W': money = money - int(trans[1]) elif input() == '': break print(f'Your current balance is: {money}')