3 回答
TA貢獻1864條經驗 獲得超2個贊
在第一個和最后一個示例中,您使用字符串作為索引 (a[str(i)])。但是,indeces 始終是整數。請記住,第一個索引始終為 0,而不是 1。您的 for 循環從 1 開始迭代。由于第一個元素的索引為 0,因此最后一個元素的索引為 len(array) - 1,這意味著您的 for-循環應該只迭代到 len(a)。for 循環索引的問題也適用于最后一個示例。
在第二個示例中,您沒有正確使用 or 語句。你不能這樣比較他們。你必須這樣寫:
if letter == "a" or letter == "e" or letter == "i" or letter == "o" or letter == "u":
為了縮短這個,只需寫:
if letter in "aeiou":
在這里,您檢查字母是否在字符串“aeiou”中。
在您的第二個示例中,每次找到元音時,您還將值重置為零。這將導致值僅為 1 或未定義。將 value = 0 放在 for 循環之前,它應該可以工作。
TA貢獻1816條經驗 獲得超6個贊
您曾經a[str(i)]訪問字符串中的字母,其中 str(i) 是一個字符串并且所有數組索引都必須是整數,這就是錯誤的原因。
i 已經是一個整數,所以你應該使用 a[i] 來訪問字母。
也正如@usr2564301 所說,你的or陳述是錯誤的
if letter == "a" or "e" or "i" or "o" or "u":
應該,
if letter in ["a", "e", "i", "o", "u"]:
TA貢獻1829條經驗 獲得超9個贊
請注意,在索引數組或字符串時需要使用整數:
a = input("word - ").lower()
for i in range(len(a)):
if a[i] == "a" or "e" or "i" or "o" or "u":
print("ok")
else:
print("no")
這應該可以解決您的問題:
vowels = set("aeiou")
user_input = input("word - ").lower()
vowels_count = len([letter for letter in user_input if letter in vowels])
print(f"you typed {vowels_count} vowel(s)")
添加回答
舉報
