Я написал небольшой проект "Игра в города". Я сделал почти всевозможные проверки и одна из них не работает, а именно с городом Йошкар-Ола. В России это единственный город и мне нужно проверять, если последний символ оканчивается на "й" не называли ли еще город Йошкар-Ола?, если да, то нужно назвать на предыдущую букву. Код:
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