Python用户名生成程序求助:sys.argv实现规则生成异常排查
Python用户名生成程序错误排查
需求概述
- 通过
sys.argv接收名和姓作为参数 - 用户名生成规则:名字首字母小写 + 姓氏最后7个字符小写 + 名与姓的总字符数(示例:Jackie Robinson → jobinson14)
- 测试场景:输入
Darth Vader,预期输出Your username is dvader10,实际输出Darth
原代码
import sys def full_name(first, last): first = input(first) last = input(last) username = lower((first[0] + last[:7])) + len(first+last) return username first = sys.argv[1] last = sys.argv[2] username = full_name(first, last) print ("Your username is",username)
错误点分析及修复
- 多余的
input()调用:函数参数first和last已经通过sys.argv获取到外部传入的值,无需再用input()二次读取。原代码中input(first)会把传入的Darth作为提示信息打印出来,然后等待用户输入,这就是实际输出Darth的原因,直接删除这两行即可。 lower()函数使用错误:Python中没有全局的lower()函数,字符串转小写需要调用字符串对象的lower()方法。同时,规则要求取姓氏最后7个字符,原代码last[:7]是取前7个,应改为last[-7:]。- 字符串与数字拼接错误:
len(first+last)返回整数类型,无法直接和字符串拼接,需要用str()转为字符串类型。
修复后的代码
import sys def full_name(first, last): name_segment = first[0].lower() + last[-7:].lower() length_segment = str(len(first) + len(last)) return name_segment + length_segment first = sys.argv[1] last = sys.argv[2] username = full_name(first, last) print("Your username is", username)
验证结果
执行命令:python script_name.py Darth Vader
输出:Your username is dvader10,与预期一致。
内容的提问来源于stack exchange,提问作者MCly
相关产品推荐
相关产品推荐

