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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:54:14