class_bool 发表于 2022-1-21 00:14:52

求助!练习:创建用户名

原问题:写一个遍历 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 = names.lower()
    x = usernames.find(' ')
    usernames = usernames[:x] + '_' + usernames
print(usernames)


报错
IndexError: list assignment index out of range

isdkz 发表于 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.lower())   # 修改这一行代码
    x = usernames.find(' ')
    usernames = usernames[:x] + '_' + usernames
print(usernames)

傻眼貓咪 发表于 2022-1-21 10:26:07

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames =
print(usernames)

Twilight6 发表于 2022-2-6 11:24:26


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

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

或者直接使用 append 函数,同2楼代码:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
for i in range(len(names)):
    usernames.append(names.lower())
    x = usernames.find(' ')
    usernames = usernames[:x] + '_' + usernames
print(usernames)
页: [1]
查看完整版本: 求助!练习:创建用户名