对于学校项目,我必须找到字符串中列表元素的所有实例的位置。我对Python缺乏经验,可能在了解if语句,循环,变量和列表的知识有限的情况下根本不了解如何做到这一点。
到目前为止,我唯一尝试过的方法是使用for循环。我创建了计数器变量“ i”,对于字符串中的每个list [i],我都需要它的位置。在开始寻找职位之前,我需要确定字符串中的列表元素。
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
我哪里出错了?
答案 0 :(得分:1)
您使用的for循环错误。
这将获取字符串中的每个字符,将其分配给x,然后进行打印:
for x in 'aabfh':
print (x)
这将获取字符串中的每个字符,将其分配给list1 [i]并进行打印:
for list1[i] in 'aabfh':
print(list1[i])
在您的代码中,如果查看list1,您会发现它已更改为['h','h','h'],因为这就是您要它执行的操作(或至少与h一样多)因为“某些条件”允许)。
答案 1 :(得分:0)
您的循环加注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
答案 2 :(得分:0)
您的代码有很多问题。
正如@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.
'''
您应该可以从这里弄清楚这一点。