鱼C论坛

 找回密码
 立即注册
查看: 1247|回复: 3

[已解决]求助!练习:创建用户名

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

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

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

x
原问题:写一个遍历 names 列表以创建 usernames 列表的 for 循环。要为每个姓名创建用户名,使姓名全小写并用下划线代替空格。对以下列表运行 for 循环:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
应该会创建列表:
usernames = ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]


我的代码
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
i = 0
for i in range(len(names)):
    usernames[i] = names[i].lower()
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x:]
print(usernames)


报错
IndexError: list assignment index out of range
最佳答案
2022-2-6 11:24:26

usernames 列表初始化时为 空列表,导致一开始 usernames[i ] 赋值超出索引值,导致报错

可以在初始化时候将列表创建好指定长度,即可:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = [0] * len(names)
for i in range(len(names)):
    usernames[i] = names[i].lower()
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x+1:]
print(usernames)


或者直接使用 append 函数,同2楼代码:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
for i in range(len(names)):
    usernames.append(names[i].lower())
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x+1:]
print(usernames)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-21 02:34:04 | 显示全部楼层
列表为空的时候不能用索引的方式赋值
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
i = 0
for i in range(len(names)):
    usernames.append(names[i].lower())     # 修改这一行代码
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x:]
print(usernames)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-21 10:26:07 From FishC Mobile | 显示全部楼层
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = [name.lower().replace(' ', '_') for name in names]
print(usernames)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-6 11:24:26 | 显示全部楼层    本楼为最佳答案   

usernames 列表初始化时为 空列表,导致一开始 usernames[i ] 赋值超出索引值,导致报错

可以在初始化时候将列表创建好指定长度,即可:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = [0] * len(names)
for i in range(len(names)):
    usernames[i] = names[i].lower()
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x+1:]
print(usernames)


或者直接使用 append 函数,同2楼代码:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
for i in range(len(names)):
    usernames.append(names[i].lower())
    x = usernames[i].find(' ')
    usernames[i] = usernames[i][:x] + '_' + usernames[i][x+1:]
print(usernames)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 13:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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