私はコードを持っています:
f = open("dict.txt", "r")
M = []
for line in f:
l = line.split(" ")
M.append(l)
print(M)
phone_letters = [
["a", "b", "c"],
["d", "e", "f"],
["g","h","i"],
["j","k","l"],
["m","n","o"],
["p","q","r","s"],
["t","u","v"],
["w","x","y","z"]
]
t = 0
k = 0
max = 100
for i in range(len(phone_letters)):
for quantity in range(1, 20):
if t == 1: # > 9 - error7
break
if t == 2:
break # End of word
if t == 4:
break #«MANUALLY».
max = 100
vvod_2 = int(input("Enter the next digit: "))
if vvod_2 != 1:
for i in range(len(phone_letters)):
if (vvod_2 - 2) == i:
for i_2 in range(len(M)):
if len(M[i_2][0]) >= quantity:
if int(M[i_2][1][:-1]) < max:
for i_3 in range(len(phone_letters[i])):
if M[i_2][0][(quantity - 1)] == phone_letters[i][i_3]:
max = int(M[i_2][1][:-1])
k = M[i_2][0][:quantity]
t = 0
quantity = quantity + 1
print(k)
if vvod_2 > 9:
print("Error")
t = 1
if vvod_2 == 1:
for i_last in range(len(M)):
if str(k) == M[i_last][0]:
print("End of word.")
t = 2
else:
t = 4
しかし、このプログラムは正しく動作しません。次のようなファイル「dict.txt」があります。
hello 27
play 32
good 45
これらの数字は、単語に遭遇する確率を意味します。私のプログラムは動作しますが、以前の文字を調べるのではなく、すべての文字で結果が得られます。
たとえば、次の場合:day 37
その後、同じ文字で始まる別の単語がない場合 - 3 を入力してプログラムを実行した後 - 「d」、もう一度 3 を入力 - 結果は「手動」である必要があります。私の辞書には同じ文字で始まる単語がないからです。上記のプログラムは、前の文字にもかかわらず、2 番目の文字で単語を見つける必要があります。助けてください!