You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用*args、**kwargs直接存储输入及生成学生信息字典?

问题解答

一、不用列表,用*args实现姓名输入与打印

先修正你原代码里的几个问题:

  • Python关键字要小写:Def改成def,While改成while
  • 函数参数*args和内部变量Args重名,且input()默认按回车返回一行内容,split('\n')完全没必要
  • 停止判断逻辑错误,你拿函数参数args和字符串比较,应该判断每次输入的内容

方案1:用元组收集后返回(无显式列表)

def test1():
    names = []
    while True:
        name = input("enter st name: ")
        if name == "stop":
            break
        names.append(name)
    # 返回元组,*args可直接接收
    return tuple(names)

def test2(*args):
    for i in args:
        print(i)

test2(*test1())

方案2:用生成器彻底避免显式容器

如果不想提前存所有输入,用生成器函数更省内存,调用时直接解包给*args:

def test1():
    while True:
        name = input("enter st name: ")
        if name == "stop":
            break
        yield name

def test2(*args):
    for i in args:
        print(i)

test2(*test1())

二、获取姓名+成绩生成字典,用**kwargs实现

可以让用户输入姓名:成绩格式的内容,拆分后直接生成字典,再通过**kwargs传递给处理函数:

方案1:生成器转字典

def get_student_scores():
    while True:
        info = input("enter name:score (type 'stop' to end): ")
        if info == "stop":
            break
        name, score = info.split(":")
        yield name, int(score)

# 直接生成字典
student_dict = dict(get_student_scores())
print(student_dict)

# 用**kwargs传递给处理函数
def print_student_info(**kwargs):
    for name, score in kwargs.items():
        print(f"{name}: {score}")

print_student_info(**student_dict)

方案2:直接收集为字典返回

def get_student_scores():
    scores = {}
    while True:
        info = input("enter name:score (type 'stop' to end): ")
        if info == "stop":
            break
        name, score = info.split(":")
        scores[name] = int(score)
    return scores

def print_student_info(**kwargs):
    for name, score in kwargs.items():
        print(f"{name}: {score}")

print_student_info(**get_student_scores())

关于input().split()的问题

input()本身就是读取一行输入(按回车结束),split()是把同一行内的内容按空格拆分。如果你要按回车逐个输入,每次循环单独调用一次input()就行,完全不需要加split('\n')——这个操作对单行输入毫无意义。

内容的提问来源于stack exchange,提问作者elahe motavalian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:03:41