这是任务:使用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