Python中如何将用户输入的姓名转换为用户数据存储用文件名
姓名转文件名逻辑补全方案
核心问题定位
现有代码的两个待调整点:
- 拆分姓名得到的列表没有指定取数索引,没法正确拿到对应的名、姓片段
- 初始写的文件名拼接顺序,和实际要的输出格式不匹配
分步实现逻辑
- 先明确
split()的取值规则:Python里字符串调用不带参数的split()方法时,会自动按输入里的连续空格拆分,返回的列表是从0开始索引的。比如输入john doe,拆分完的列表就是['john', 'doe'],其中索引0是第一个输入的词(也就是名),索引1是第二个输入的词(也就是姓)。 - 补全列表索引的空值:按照输入的“名 姓”格式,直接给对应位置赋值就行——名取列表第0位的元素,写
firstName = nameparts[0];姓取列表第1位的元素,写lastName = nameparts[1]。 - 对齐文件名拼接规则:你现在期望的输出是输入
john doe生成john.doe,也就是名在前、姓在后用点连接,那原来代码里写的lastName+"."+firstName是反过来的,要调整成firstName + "." + lastName才能匹配要求。 - 建议加个基础校验:实际用的时候难免有用户输错,比如只打一个词、打了好几个词,拆分完列表长度不对的话直接取索引会报越界错误,加个长度判断就能提前提示用户按正确格式输入。
补全后的完整可运行代码
name = input("What's your name? (first, last): ") nameparts = name.split() # 校验输入格式是否符合要求 if len(nameparts) != 2: print("输入格式错误,请按照“名 姓”的格式输入,比如 john doe") else: firstName = nameparts[0] lastName = nameparts[1] # 按期望格式生成文件名:firstname.lastname fileName = firstName + "." + lastName print(f"生成的用户文件名为:{fileName}")
实际运行效果
- 正常输入
john doe,拆分后的列表长度为2,最终生成的文件名为john.doe,和预期一致 - 如果输入内容不符合格式(比如只输入
john,或者输入john a b doe),会直接弹出格式错误提示,不会触发运行报错
如果你的实际需求是要生成“姓.名”格式的文件名,只需要把拼接顺序改回原来的
lastName + "." + firstName即可,这种情况下输入john doe会生成doe.john。
内容的提问来源于stack exchange,提问作者user15340455
相关产品推荐
相关产品推荐

