鱼C论坛

 找回密码
 立即注册
查看: 1682|回复: 5

[已解决]收集参数与input关系的问题

[复制链接]
发表于 2022-3-12 14:52:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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传入吗)
最佳答案
2022-3-12 14:57:14
本帖最后由 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:\>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-12 14:57:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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:\>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 15:38:03 | 显示全部楼层

谢谢 但是能解释一下为啥要用eval而不用tuple吗
另外还有个问题 就是在print(a(*t))这里 这个地方的*t是用来表明它是个收集参数的意思吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-12 15:42:27 | 显示全部楼层
Jerry~Mouse 发表于 2022-3-12 15:38
谢谢 但是能解释一下为啥要用eval而不用tuple吗
另外还有个问题 就是在print(a(*t))这里 这个地方的*t ...


因为 input 得到的是字符串,tuple()会将字符串的每一个字符放到元组,

字符是不能用 sum 来求和的,eval 的话会把你的字符串当成 python 表达式来求值,

直接就可以把你的输入当成 python 里面的表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 17:25:14 | 显示全部楼层

现在出现了一个新问题
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[i]:
            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","hahahacurrenjiang  q124")

这个要怎么做到一次性传入多个收集参数呢?这次的收集参数是字符串而且还带有了逗号
请问怎么解决呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-12 17:38:39 | 显示全部楼层
本帖最后由 isdkz 于 2022-3-12 17:43 编辑
Jerry~Mouse 发表于 2022-3-12 17:25
现在出现了一个新问题
def count(*strx):
    lenth = len(strx)


eval只能传 python 表达式(符合 python 语法规则的),

你输入的时候得按 python原始字符串格式 输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 01:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表