繁体   English   中英

范围类型有问题

[英]having trouble with range type

代码的第二部分应该获取索引(偶数),然后将其乘以字符串的长度。 之后,它应该将列表中的单词替换为操作的结果,并打印类似 original list: ['computer', 'science', 'university', 'alberta', 'edmonton'] modified list: [0 , '科学', 20, '阿尔伯塔', 32]

lista = []
word = input('Enter a word >')
while word != 'stop':
    lista.append(word)
    word = input('Enter a word >')
print(lista)

for index in range(0, len(lista), 2):
    lista[index] = index
    index *= len(str(word))
    print(lista)

你快到了。 你有两个问题。

一,您在for循环中使用变量word ,每次迭代都不会更新。 正如您的代码当前所代表的那样, word只会存储附加到列表中的最后一个单词(在您的情况下为“埃德蒙顿”)。 您需要在每次迭代时更新变量。 我建议不要使用word来提高可读性,因为您在while循环中将它用于不同的目的(我使用tmp_word代替):

for index in range(0, len(lista), 2):
    tmp_word = lista[index]
    lista[index] = index
    index *= len(str(tmp_word))

print(lista)

我们所做的只是将字符串存储在变量tmp_word中的index位置。

如果我们运行代码,我们会得到:

[0, 'science', 2, 'alberta', 4]

这是我们的第二个问题——你能弄清楚为什么列表中的数字不正确吗? 如果您无法找到解决方案,请告诉我,我们会解决的!

您的代码中有一个小的逻辑错误,您首先使用项目索引更新列表项,然后您正在修改索引

正确的代码

lista = []
word = input('Enter a word >')
while word != 'stop':
    lista.append(word)
    word = input('Enter a word >')

for index in range(0, len(lista), 2):
    word = lista[index]
    temp = index*len(word)
    lista[index] = temp

print(lista)

我的实现看起来像

for index in range(0, len(lista), 2):
    lista[index] = index * len(lista[index])

使用列表理解

lista = [i*len(lista[i]) if i % 2 == 0 else lista[i] for i in range(len(lista))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM