[英]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.