如何讓這個程式不把空格算作一個字母,而是把大寫和小寫字母一起算作“一個”
word = str(input())
list = []
listchcounter = []
for character in word:
if character not in list:
list.append(character)
listchcounter.append(0)
for character in word:
for index in range(len(list)):
if list[index] == character:
listchcounter[index] = 1
for index in range(len(list)):
print("'" list[index] "'",'appears',listchcounter[index],'times')
uj5u.com熱心網友回復:
僅更改在第 1 行的 .lower() 輸入后面。在第 6 行中,和字符 != ' ' 。那么代碼已經可以正常作業了。
word = str(input().lower())
list = []
listchcounter = []
for character in word:
if character not in list and character != ' ':
list.append(character)
listchcounter.append(0)
for character in word:
for index in range(len(list)):
if list[index] == character:
listchcounter[index] = 1
for index in range(len(list)):
print("'" list[index] "'",'appears',listchcounter[index],'times')
uj5u.com熱心網友回復:
@dimitry 的評論包含解決您提出的問題的基本方法。
要排除要使用if character != ' '.
要將大寫字母和小寫字母視為相同,您需要通過 將所有字符轉換為小寫字母character = character.lower()。
讓我們把這些放在一起:
word = "foOtball Timeout"
letters = [letter.lower() for letter in word if letter != " "]
print(letters )
給我們:
['f', 'o', 'o', 't', 'b', 'a', 'l', 'l', 't', 'i', 'm', 'e', 'o', 'u', 't']
現在我們可以計算它們了。我個人會collections.Counter()為此使用它,但手動完成它很容易。
letter_counts = {}
for letter in letters:
letter_counts[letter] = letter_counts.get(letter, 0) 1
print(letter_counts )
為我們提供所需內容的關鍵:
{'f': 1, 'o': 3, 't': 3, 'b': 1, 'a': 1, 'l': 2, 'i': 1, 'm': 1, 'e': 1, 'u': 1}
現在剩下的就是很好地列印結果:
for letter, count in letter_counts.items():
print(f"The letter \"{letter}\" appears {count} time(s) in \"{word}\"")
給予:
The letter "f" appears 1 time(s) in "foOtball Timeout"
The letter "o" appears 3 time(s) in "foOtball Timeout"
The letter "t" appears 3 time(s) in "foOtball Timeout"
The letter "b" appears 1 time(s) in "foOtball Timeout"
The letter "a" appears 1 time(s) in "foOtball Timeout"
The letter "l" appears 2 time(s) in "foOtball Timeout"
The letter "i" appears 1 time(s) in "foOtball Timeout"
The letter "m" appears 1 time(s) in "foOtball Timeout"
The letter "e" appears 1 time(s) in "foOtball Timeout"
The letter "u" appears 1 time(s) in "foOtball Timeout"
完整代碼:
word = "foOtball Timeout"
letter_counts = {}
for letter in [letter.lower() for letter in word if letter != " "]:
letter_counts[letter] = letter_counts.get(letter, 0) 1
for letter, count in letter_counts.items():
print(f"The letter \"{letter}\" appears {count} time(s) in \"{word}\"")
或者如果你想使用collections.Counter:
import collections
word = "foOtball Timeout"
letter_counts = collections.Counter(l.lower() for l in word if l != " ")
for letter, count in letter_counts.items():
print(f"The letter \"{letter}\" appears {count} time(s) in \"{word}\"")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341420.html
上一篇:ModuleNotFoundError:沒有名為'rest_framework'的模塊python3django
