@grabonovich

Почему значение воспринимается как ключ?

Решил сделать утилиту для перевода текста с неправильной раскладкой, то есть инпут "ghbdtn" должен вернуть "привет" и наоборот. Код почему-то возвращает True при первой проверке, если ввести кириллицу, а в случае с латиницей - при второй, после чего я получаю KeyError. В чём ошибка?
alph = {
	"q":"й", "w":"ц","e":"у","r":"к","t":"е","y":"н","u":"г","i":"ш","o":"щ","p":"з","a":"ф","s":"ы", "d":"в", "f":"а","g":"п","h":"р","j":"о","k":"л","l":"д","z":"я","x":"ч","c":"с","v":"м","b":"и","n":"т","m":"ь", " ":" ", ";":"ж", "'":"э", "?":",", "/":".", "&":"?", "`":"ё", "[":"х", "]":"ъ", ",":"б", ".":"ю"
}
alph_ru = {
	"й":"q", "ц":"w","у":"e","к":"r","е":"t","н":"y","г":"u","ш":"i","щ":"o","з":"p","ф":"a","ы":"s", "в":"d", "а":"f","п":"g","р":"h","о":"j","л":"k","д":"l","ж":"z","э":"x","с":"c","м":"v","и":"b","т":"n","ь":"m", " ":" ", "ж":";", "э":"'", ",":"?", ".":"/", "?":"&", "ё":"`", "х":"[", "ъ":"]", "б":",", "ю":"."
}
word = []
a = list(input("Введите фразу с неправильной раскладкой: "))

for i in a:
	if i in alph.keys():
		word.append(alph[i])
	elif i in alph_ru.keys():
		word.append(alph[i])
	else:
		word.append(i)
print("Переводим...", '\n'+ 'Переведённая фраза: '+"".join(word))

Примечание: я хочу сделать универсальный перевод, а не "выберите, на какой язык надо перевести"
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
shabelski89
@shabelski89
engineer
так и вставляйте из нужного словаря alph_ru!
elif i in alph_ru.keys():
    word.append(alph_ru[i])
Ответ написан
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
if i in alph_ru.keys():
    word.append(alph[i])

Ищете в одном словаре, а значение тащите из другого
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
<b>if i in alph.keys():</b>
вот как миинимум здесь ошибка, убери <b> </b>
Ответ написан
Все до вас уже придумано, старайтесь пользоваться встроенными функциями

alph = {
    "q": "й", "w": "ц", "e": "у", "r": "к", "t": "е", "y": "н", "u": "г", "i": "ш", "o": "щ", "p": "з", "a": "ф",
    "s": "ы", "d": "в", "f": "а", "g": "п", "h": "р", "j": "о", "k": "л", "l": "д", "z": "я", "x": "ч", "c": "с",
    "v": "м", "b": "и", "n": "т", "m": "ь", " ": " ", ";": "ж", "'": "э", "?": ",", "/": ".", "&": "?", "`": "ё",
    "[": "х", "]": "ъ", ",": "б", ".": "ю"
}
en_char = ''.join(alph)
ru_char = ''.join(alph.values())

trans = ''.maketrans(en_char, ru_char)

print('ghbdtn'.translate(trans))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы