对于一个学校项目,我必须找到一个字符串中列表元素的所有实例的位置。我没有使用Python的经验,可能因为对if语句、循环、变量和列表的了解有限,所以无法理解如何做到这一点。
到目前为止,我尝试过的唯一方法是使用for循环。我创建了计数器变量"i",对于字符串中的每个listi,我都需要它的位置。在开始查找位置之前,我需要确定字符串中的列表元素。
list1=['a','b','c']
str1='aabfh'
i=0
while "some condition":
for list1[i] in str1:
print(list1[i])
i=i+1我期望得到如下输出:
a
a
b但得到的却是:
a
a
b
f
h我哪里错了?
发布于 2019-03-27 04:35:00
您使用的for循环是错误的。
这将获取字符串中的每个字符,将其分配给x,并打印出来:
for x in 'aabfh':
print (x)这将获取字符串中的每个字符,将其分配给list1i,并打印出来:
for list1[i] in 'aabfh':
print(list1[i])在您的代码中,如果您查看list1,您会发现它已被更改为'h','h','h‘,因为这是您告诉它要做的事情(或者至少与“某些条件”允许的h一样多)。
发布于 2019-03-27 04:35:19
您的for循环将引发NameError。你不能像那样在for循环中访问列表的元素。将其更改为以下内容,以打印所需的输出:
for char in str1:
if char in list1:
print(char)
a
a
b要打印它的位置,可以使用index
for char in str1:
if char in list1:
print(list1.index(char))
0
0
1发布于 2019-03-27 04:53:44
你的代码有相当多的问题。
正如@Kenny Ostrom在他的回答中指出的那样,你的for格式是错误的。
for循环的格式为:
for new_variable_name in list:
print(new_variable_name)将new_variable_name分配给该列表中的每一项
for循环遍历列表中的每一项一次。在你的情况下
for char in str1
print(char)将打印
a
a
b
f
h您遇到的另一个问题是不必要的while循环。您将for循环包围在一个while循环中,该循环将继续运行而不会停止。如果您没有for循环,这可能对您很有用,但因为您已经在使用for循环,所以没有必要这样做。
如果你想使用for循环,你程序的结构应该是这样的:
list1=['a','b','c']
str1='aabfh'
i=0
for character in str1:
'''
Some code here that figures out **if** the character is in list1 and then prints that character.
'''您应该能够从这里弄清楚这一点。
https://stackoverflow.com/questions/55365658
复制相似问题