while循环的问题。程序看不到列表的元素



这是任务:使用while循环、if语句和str((函数;遍历该列表,如果有100,则打印它及其索引号。即:";在索引号5〃处有一个100;

如果我这样编码-

lst = [10, 99, 98, 85, 45, 59, 65, 66, 76, 12, 35, 13, 100, 80, 95]
i = 0
while i < len(lst):
if lst[i] == 100:
print("There is a 100 at index no:", str(i))
i += 1

,那么一切都很好但如果我尝试使用用户输入的列表而不是设置列表,代码就不起作用:

lst = input('Enter your nums:').split(',')
entered_data = list(lst)
i = 0
while i < len(entered_data):
if entered_data[i] == 100:
print("There is a 100 at index no:", str(i))
i += 1

我不明白为什么会这样。请帮帮我。

输入生成一个字符串。

这个字符串,你在昏迷时把它分开,但它仍然是一个字符串列表。

然后您应该强制转换条目的类型。


entered_data = input('Enter your nums:')
lst = entered_data.split(",")
for indice, elt in enumerate(lst):
try:
if int(elt) == 100:
print(f"There is a 100 at index no:{indice}")
except ValueError:
print(f"The entered value {elt} at indice {indice} is invalid. It must be an integer. It will be ignored.")

我把你的while换成了for,这是实现同样目标的一种更像蟒蛇的方式。

当您输入元素时,输入函数将输入作为字符串(str(,而不是您可能知道的整数。

一个简单的解决方案是将元素强制转换为一个整数,然后一切都完成了。所以代码就像

lst = input('Enter your nums:').split(',')
entered_data = list(lst)
i = 0
while i < len(entered_data):
if int(entered_data[i]) == 100:
print("There is a 100 at index no:", str(i))
i += 1

请注意,更改后的行是将元素与整数100进行比较的位置。您也可以打印"entered_data",您将能够看到单个元素周围的单引号(我使用的是jupyter笔记本(

显示列表元素的代码

lst = input('Enter your nums:').split(',')
entered_data = list(lst)
print(entered_data)
i = 0
while i < len(entered_data):
if int(entered_data[i]) == 100:
print("There is a 100 at index no:", str(i))
i += 1

它的输出是

Enter your nums:41,56,100,4
['41', '56', '100', '4'] 
There is a 100 at index no: 2

最新更新