これは私の課題です:
感嘆符 ('!') が見つかるまでキーボードからテキストを読み取るプログラムを作成します。
'A' から 'Z' までの文字で添字を付けた整数の配列を使用して、各文字の出現回数を数えます。別のカウンターで、「その他」の文字の総数も数えます。
最も多く見つかった文字を出力します。(最大カウント数の文字が複数存在する可能性があることに注意してください。) また、どの文字 (または複数の文字) が最も少ない回数見つかったかを出力しますが、まったく見つからなかった文字を除外するようにしてください。
そして、これは私のコードです:
msg = input("What is your message? ")
print ()
num_alpha = 26
int_array = [0] * num_alpha
vowel = [0] * 10000
consanant = [0] * 10000
for alpha in range(num_alpha):
int_array[alpha] = chr(alpha + 65)
if int_array[alpha] == 'A' or int_array[alpha] == 'E' or int_array[alpha] == 'I' or int_array[alpha] == 'O' or int_array[alpha] == 'U':
vowel[alpha] = int_array[alpha]
else:
consanant[alpha] = int_array[alpha]
print()
lett = 0
otherch = 0
num_vowels = 0
num_consonants = 0
count_character = [0] * 100000
length = len(msg)
for character in msg.upper():
if character == "!":
otherch = otherch + 1
count_character[ord(character)] = count_character[ord(character)] + 1
break
elif character < "A" or character > "Z":
otherch = otherch + 1
count_character[ord(character)] = count_character[ord(character)] + 1
else:
lett = lett + 1
count_character[ord(character)] = count_character[ord(character)] + 1
alpha = ord(character) - ord('A')
if vowel[(alpha)] == (character):
num_vowels = num_vowels + 1
else:
num_consonants = num_consonants + 1
print()
print("Number of Letters =", lett)
print("Number of Other Characters = ", otherch)
print("Number of Vowels = ", num_vowels)
print("Number of Consanants = ", num_consonants)
print()
for character in msg.upper():
print("Character", character, "appeared" , count_character[ord(character)] , "time(s).")
if character == "!":
break
print()
max_letter = -999999999999
min_letter = 999999999999
count_hi = 0
count_low = 0
for character in msg.upper():
if count_character[ord(character)] > max_letter:
max_letter = count_character[ord(character)]
count_hi = count_hi + 1
print("Character" , msg[count_hi + 1] , "appeared the most. It appeared", max_letter, "times.")
print(count_hi)
for character in msg.upper():
if count_character[ord(character)] < min_letter:
min_letter = count_character[ord(character)]
count_low = count_low + 1
print("Character" , msg[count_low + 1] , "appeared the least. It appeared", min_letter, "times.")
print(count_low)
カウンターが完全に間違っていることは知っていますが、それを理解できないようです。何か案は?
編集:
文字列を入力した場合:「AAAAAAAAAAAAAAAAAAAaaaaaaaaaHHHHHh!」
それは出力します:
一番多く登場したキャラクターA。29回登場。1 登場人物 A が最も少なかった。1回登場。3
明らかに最初の文字列は正しいですが、2 番目の文字列は文字 h の出現が最も少ないと言うはずです。