3 回答

TA貢獻1775條經驗 獲得超8個贊
您使用的 for 循環錯誤。
這將獲取字符串中的每個字符,將其分配給 x,并打印出來:
for x in 'aabfh':
print (x)
這將獲取字符串中的每個字符,將其分配給 list1[i],并打印出來:
for list1[i] in 'aabfh':
print(list1[i])
在您的代碼中,如果您查看 list1,您會發現它已更改為 ['h', 'h', 'h'] 因為這是您告訴它執行的操作(或至少與“some條件”將允許)。

TA貢獻1906條經驗 獲得超10個贊
您的代碼有很多問題。
正如@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.
'''
你應該能夠從這里弄清楚這一點。

TA貢獻1827條經驗 獲得超9個贊
你的 for 循環 raise 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
添加回答
舉報