0

これは私の課題です:

'!' までキーボードからテキストを読み取るプログラムを作成します。見つかった。

'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]
        print(vowel[alpha])
    else:
        consanant[alpha] = int_array[alpha]



print()

lett = 0
otherch = 0
num_vowels = 0
num_consanants = 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
        if vowel[(alpha)] == (character):
            num_vowels = num_vowels + 1
            print(vowel[alpha])
        else:
            num_consanants = num_consanants + 1

print("Number of Letters =", lett)
print("Number of Other Characters = ", otherch)
print("Number of Vowels = ", num_vowels)
print("Number of Consanants = ", num_consanants)


for character in msg.upper():
        print("Character", character, "appeared" , count_character[ord(character)] , "time(s).")
        if character == "!":
            break

文字列を入力するたびに、母音が認識されません。「あべ!」と入力したら 次のように出力されます。

Number of Letters = 3 
Number of Other Characters =  1 
Number of Vowels=  0 
Number of Consanants =  3 
Character A appeared 1 time(s). 
Character B appeared 1 time(s). 
Character E appeared 1 time(s).
Character ! appeared 1 time(s).
4

2 に答える 2

2
if vowel[(alpha)] == (character):
  num_vowels = num_vowels + 1
  print(vowel[alpha])

このコードでは、アルファは範囲外です。つまり、アルファは、前の for ループの最後の反復でのものになります。

また、母音をチェックするより良い方法をお勧めしますin

vowels = ['a','e','i','o','u']
char = 'a'
if char in vowels:
  pass              # you have found a vowel
于 2013-08-15T00:19:52.197 に答える
0

ここで を割り当てる必要がありますalphaforそれ以外の場合は、ループの最後の値が一番上に表示されます (したがって、25 になります)。

else:
    lett = lett + 1
    count_character[ord(character)] = count_character[ord(character)] + 1
    alpha = ord(character) - ord('A') # <-- need this
    if vowel[(alpha)] == (character):
        num_vowels = num_vowels + 1
        print(vowel[alpha])
    else:
        num_consanants = num_consanants + 1
于 2013-08-15T00:22:14.573 に答える