Задать вопрос
@hismat5232

Почему не срабатывает проверка python tkinter?

Я написал небольшой проект "Игра в города". Я сделал почти всевозможные проверки и одна из них не работает, а именно с городом Йошкар-Ола. В России это единственный город и мне нужно проверять, если последний символ оканчивается на "й" не называли ли еще город Йошкар-Ола?, если да, то нужно назвать на предыдущую букву. Код:
def Game_Started(event):
    global cities,bot,sim,record,gor,delete_cities
    user = ""
    text = event.widget.get("1.0", "end-1c")  # Получаем весь текст из виджета
    TextPole_lines = text.split('\n')
    user_lines = len(TextPole_lines)
    if user_lines % 5 >= 0 and user_lines % 5 <= 4: # Проверка текста юзера
        user += TextPole_lines[user_lines - 1] # Запоминаем город юзера
        print(user)
    if event.keysym == "Return" and user:
        if user in delete_cities and user not in cities:
            mb.showerror("Ошибка",'Такой город уже называли.')
        elif user not in cities:
            mb.showerror("Ошибка", 'Такого города не существует! Попробуйте снова.')
        else:
            if bot[-1] not in sim:
                if user.lower()[0] != bot[-1]:
                    mb.showerror("Ошибка", 'Неправильно. город должен начинаться с буквы "' + bot[-1] + '"')
                else:
                    record+=1
                    TextPole.insert(END, '\nВерно!')
                    if user[-1] == "й" and "Йошкар-Ола" not in cities:
                        TextPole.insert(END, '\nМне на букву "' + user[-2] + '".')
                    elif user[-1] not in sim:
                        TextPole.insert(END, '\nМне на букву "' + user[-1] + '".')
                    elif user[-1] in sim:
                        TextPole.insert(END, '\nМне на букву "' + user[-2] + '".')
                    delete_cities.append(user)
                    cities.remove(user)
                    for candidate in cities:
                        if user[-1] not in sim:
                            if candidate.lower()[0] == user[-1]:
                                bot = candidate
                                cities.remove(candidate)
                                delete_cities.append(candidate)
                                TextPole.insert(END, '\n>>>>>>>> БОТ: ' + candidate)
                                if candidate[-1] == "й" and "Йошкар-Ола" not in cities:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                elif candidate[-1] in sim:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                else:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-1] + '".')
                                break
                        elif (user[-1] in sim) or (user[-1] == "й" and "Йошкар-Ола" not in cities):
                            if candidate.lower()[0] == user[-2]:
                                bot = candidate
                                delete_cities.append(candidate)
                                cities.remove(candidate)
                                TextPole.insert(END, '\n>>>>>>>> БОТ: ' + candidate)
                                if candidate[-1] == "й" and "Йошкар-Ола" not in cities:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                elif candidate[-1] in sim:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                else:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-1] + '".')
                                break
            elif (bot[-1] in sim) or (bot[-1] == 'й' and 'Йошкар-Ола' not in cities):
                if user.lower()[0] != bot[-2]:
                    mb.showerror("Ошибка", 'Неправильно. город должен начинаться с буквы "' + bot[-2] + '"')
                else:
                    TextPole.insert(END, '\nВерно!')
                    if user[-1] == "й" and "Йошкар-Ола" not in cities:
                        TextPole.insert(END, '\nМне на букву "' + user[-2] + '".')
                    elif user[-1] not in sim:
                        TextPole.insert(END, '\nМне на букву "' + user[-1] + '".')
                    elif user[-1] in sim:
                        TextPole.insert(END, '\nМне на букву "' + user[-2] + '".')
                    cities.remove(user)

                    for candidate in cities:
                        if user[-1] not in sim:  # Последний символ города юзера не входит в список исключений.
                            if candidate.lower()[0] == user[-1]:
                                bot = candidate
                                delete_cities.append(candidate)
                                cities.remove(candidate)
                                TextPole.insert(END, '\n>>>>>>>> БОТ: ' + candidate)
                                if candidate[-1] == "й" and "Йошкар-Ола" not in cities:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                elif candidate[-1] in sim:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                else:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-1] + '".')
                                break
                        elif (user[-1] in sim) or (user[-1] == "й" and "Йошкар-Ола" in delete_cities):
                            if candidate.lower()[0] == user[-2]:
                                bot = candidate
                                delete_cities.append(candidate)
                                cities.remove(candidate)
                                TextPole.insert(END, '\n>>>>>>>> БОТ: ' + candidate)
                                if candidate[-1] == "й" and "Йошкар-Ола" not in cities:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                elif candidate[-1] in sim:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-2] + '".')
                                else:
                                    TextPole.insert(END, '\nВам на букву "' + candidate[-1] + '".')
                                break
  • Вопрос задан
  • 35 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы