亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一一檢測一個字符是否有特定字母,然后計算它們的數量

一一檢測一個字符是否有特定字母,然后計算它們的數量

蠱毒傳說 2021-09-28 16:18:29
我正在嘗試制作一個程序來檢測您鍵入的單詞中有多少個元音。這是我的源代碼(我有多個代碼):a = input("word - ").lower()for i in range(1, len(a)+1):  if a[str(i)] == "a" or "e" or "i" or "o" or "u":    print("ok")else:  print("no")`我得到錯誤:TypeError: string indices must be integers第二個:a = input("word - ").lower()for letter in a:  if letter == "a" or "e" or "i" or "o" or "u":    value = 0    value = value + 1print(value)還給我一個錯誤:TypeError: string indices must be integers第三個稍微復雜一點:a = input("rec - ").lower()for i in range(1, len(a)+1):  if a[str(i)] == "a":    print("yes a")  elif a[str(i)] == "e":    print("yes e")  elif a[str(i)] == "i":    print("yes i")  elif a[str(i)] == "o":    print("yes o")  elif a[str(i)] == "u":    print("yes u")我正在Repl.it上使用 Python 3.6.1您可以在我的個人資料中查看完整的源代碼。我感謝您的幫助。謝謝!
查看完整描述

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 循環之前,它應該可以工作。


查看完整回答
反對 回復 2021-09-28
?
瀟湘沐

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"]:


查看完整回答
反對 回復 2021-09-28
?
PIPIONE

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)")


查看完整回答
反對 回復 2021-09-28
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號