Lutry
@Lutry

Почему не работает elif?

1) Не работает elif. Вместо него срабатывает else. Почему?
2) По условию после срабатывания else нужно вернуться к инициализации переменной per. Как это сделать? Цикл по умолчанию возвращается на начало и выбирает новый ключ, но мне нужно дождаться правильного ввода на предыдущий.

# 1) Создайте словарь из 3-х ключей «Hello», «Bуe» и «Lesson»
# и значениями соответственно «Здравствуй», «Пока» и «Урок».
# 2) В бесконечном цикле выводите случайное значение из словаря
# и просите пользователя написать перевод на английском.
# 3) Проверяйте на соответствие введённой пользователем строки и ключа словаря.
# Если пользователь ввёл всё правильно, то выводить ему следующее слово.
# Если неправильно, то сообщать ему об этом, и заново ждать от него уже другого ответа.
# И так до тех пор, пока он не введёт правильный ответ.
# 4) Если пользователь вводит команду «show», то вывести словарь.
# 5) Если пользователь вводит «quit», то завершать программу.
# Примечание: не забывайте, что если пользователь будет писать,
# например: «hello», «Hello» или «HELlo» - то это всё считать правильными ответами.

import random
slv = {'Hello': 'Здравствуй', 'Bye': 'Пока', 'Lesson': 'Урок'}
keys = list(slv.keys())
print('''Введите "show", чтобы увидеть весь словарь.
Для завершения введите "quit".''')
while True:
    a = random.choice(keys)
    print(slv[a])
    print('Напишите перевод слова')
    per = input().capitalize()
    if per == a:
        print('Отлично! Продолжаем!')
    elif per == 'show':
        print(slv)
    elif per == 'quit':
        exit()
    else:
        print('Ответ неверен. Попробуйте ещё раз.')
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
kshnkvn
@kshnkvn Куратор тега Python
yay ✌️ t.me/kshnkvn
1. Заверни в цикл ввод ответа и проверки.
2. Ты для введенного значения применяешь capitalize, то есть введенный текст у тебя Show и Quit, а сравниваешь ты с showи quit
from sys import exit
import random

slv = {'Hello': 'Здравствуй', 'Bye': 'Пока', 'Lesson': 'Урок'}
keys = list(slv.keys())

print('''Введите "show", чтобы увидеть весь словарь.
Для завершения введите "Quit".''')

while True:
    a = random.choice(keys)
    print(slv[a])
    print('Напишите перевод слова')
    while True:
        per = input().capitalize()
        if per == a:
            print('Отлично! Продолжаем!')
            break
        elif per == 'Show':
            print(slv)
        elif per == 'Quit':
            exit()
        else:
            print('Ответ неверен. Попробуйте ещё раз.')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
27 окт. 2020, в 00:22
2000 руб./за проект
26 окт. 2020, в 23:49
1500 руб./за проект
26 окт. 2020, в 23:46
3000 руб./за проект