收集参数与input关系的问题
def a(*c,base = 3):if c[-1] == 5:
result = (sum(c) - c[-1]) * 5
else:
result = sum(c) * base
return result
t = tuple(input()) #这里试图用input传入收集参数 但是失败了 失败原因TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
print(a(t))
我想问的问题是:如何通过input传入多个参数(例如 *c想要10个参数 有什么办法可以通过input传入吗) 本帖最后由 isdkz 于 2022-3-12 14:59 编辑
def a(*c,base = 3):
if c[-1] == 5:
result = (sum(c) - c[-1]) * 5
else:
result = sum(c) * base
return result
t = eval(input())# 注意这里
print(a(*t)) # 注意这里
效果:
D:\>python test.py
1,2,3
18
D:\>python test.py
1,2,3,4,5
50
D:\> isdkz 发表于 2022-3-12 14:57
效果:
谢谢 但是能解释一下为啥要用eval而不用tuple吗
另外还有个问题 就是在print(a(*t))这里 这个地方的*t是用来表明它是个收集参数的意思吗 Jerry~Mouse 发表于 2022-3-12 15:38
谢谢 但是能解释一下为啥要用eval而不用tuple吗
另外还有个问题 就是在print(a(*t))这里 这个地方的*t ...
因为 input 得到的是字符串,tuple()会将字符串的每一个字符放到元组,
字符是不能用 sum 来求和的,eval 的话会把你的字符串当成 python 表达式来求值,
直接就可以把你的输入当成 python 里面的表达式 isdkz 发表于 2022-3-12 14:57
效果:
现在出现了一个新问题
def count(*strx):
lenth = len(strx)
for i in range(lenth):
Flag_num = 0
Flag_str = 0
Flag_space = 0
Flag_other = 0
for each in strx:
if each.isdigit() == True:
Flag_num += 1
elif each.isalpha() == True:
Flag_str += 1
elif each.isspace() == True:
Flag_space += 1
else:
Flag_other += 1
print("第%d个字符串中共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个" % (i + 1,Flag_str,Flag_num,Flag_space,Flag_other))
count("xiatiya1234.on,,cahuf","hahahacurrenjiangq124")
这个要怎么做到一次性传入多个收集参数呢?这次的收集参数是字符串而且还带有了逗号
请问怎么解决呢 本帖最后由 isdkz 于 2022-3-12 17:43 编辑
Jerry~Mouse 发表于 2022-3-12 17:25
现在出现了一个新问题
def count(*strx):
lenth = len(strx)
eval只能传 python 表达式(符合 python 语法规则的),
你输入的时候得按 python原始字符串格式 输入
页:
[1]