Игра в города
Пользователь (или несколько пользователей за одним компьютером) вводит слова. Начиная со второго введённого слова, программа проверяет, совпадает ли первая буква свежевведённого слова с последней буквой предыдущего. Если да, то программа работает дальше (считывает очередное слово). Если нет — выводит последнее на этот момент введённое слово и завершает работу.
Формат ввода
Вводятся несколько строк подряд.
Формат вывода
Выводится одна строка.
Пример
Ввод Вывод
новгород
дублин
новгород
дублин
тула
Вывод
тула
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Игра Города
нужно написать город на последнюю букву предыдущего города, если нет такого города вывести unknow.
Игра в Города
В коде вылазить ошибка: File "C:/Users/reger/PycharmProjects/untitled/venv/зшв.py", line 5.

Игра в города
Аня и Наташа играют в города. Они очень любят эту игру, знают много городов и к концу игры.

Игра в города
Пользователь (или несколько пользователей за одним компьютером) вводит слова. Начиная со второго.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Игра в города
Необходимо написать программу помощника для игры в города. Вначале вводится число слов, которые.
Игра в города
Здравствуйте, условие задачи: вывести все возможные последовательности городов, которые.
Игра в города продолжается
Помогите, пожалуйста. Начал проходить курс python в yandex практикуме. Задача 2 Игра в города.
Игра в города с компьютером
Всем привет! У меня есть код для игры двум игрокам: программа проверяет город на существование.

Игра в города: мягкий знак
При игре в города игроки по очереди называют названия городов (или, возможно, любые другие слова).

Игра в «Города», не могу сделать так что бы города компьютер называл на рандом а не по списку
Самая обычная игра в города, нужно назвать город на последнюю букву соверника, но проблема в том.
Игра Города¶
Игра начинается с того что один из игроков называет город и следующему игроку нужно назвать город, который будет начинаться на последнюю букву предыдущего:
- Новосибирск - Кемерово - Оренбург
Задание¶
- Реализовать версию, в которой будет возможность вводить любые слова и будет проверка на совпадение первой и последней буквы
- Сделать так чтобы можно было вводить слова в любом регистре
- Добавить проверку на существование города, который введёт пользователь
- Сделать чтобы города не могли повторяться
- Добавить графический интерфейс с помощью библиотеки easygui
- Добавить возможность играть с компьютером. Для этого потребуется библиотека random и функция choice Модули с подготовленными списками городов:
- cities_cpu_win.py
- cities_loop.py
- cities_player_win.py
- cities.py
© Copyright Revision d00c0df4 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
Игра в города, что делать?
У меня вопрос, тут либо я что-то делаю не так имея верное решение проблемы, либо решение проблемы неверное(в таком случае пожалуйста дайте верное) Пропарсил сайт со списком городов, взял список всех городов от А до Я, нужно чтобы программа рандомно выдавала город, заканчивающийся на ту букву города, который я назвал. Вот что я нашёл в интернете и подстроил под себя: if f.endswith(‘в’): res = list(filter(lambda x: x.startswith(‘В’),data_2)) переменная data_2 делает список методом split из переменной data, а f — инпут. Верно ли это решение, и что нужно принтовать? (пробовал принтовать data_2, выдавало список городов на букву А, потом на букву Б, а после вообще список городов на букву Ю)
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
Игра в города
Добрый вечер, уважаемые форумчане! Прошу помощи с решением задачи. Условие весьма громоздкое, к сожалению не могу определиться с тем, почему возникает ряд ошибок, часть из них получилось убрать, возможно проблемы связаны с неправильной организацией взимодейсвтия между классами.
- файл со списком всех городов России (легко находится в поисковике)
- файл для сохранения всех ходов (пользователя и компьютера)
- компьютер выводит случайный город из списка всех городов;
- пользователь пишет название города и нажимает Enter;
- программа проверяет существование этого города (что такое город есть в полном списке городов);
- программа проверяет не назывался ли такой город кем-то из игроков;
- программа проверяет, что введенный город начинается с той же буквы, на которую заканчивается предыдущий город (не забудьте, существуют буквы с которых не существует названия городов, тогда пользователь вводит город на первую букву предыдущего слова);
- если такого города не существует или такой город уже назывался, то пользователю предлагается повторить попытку ввода;
- если пользователь сделал 5 неудачных попыток ввода, то считается, что он проиграл;
- если введенный пользователем город валиден, то ход за компьютером;
- компьютер из существующего списка городов находит название города, начинающегося с последней буквы предыдущего города (если города с такой буквы не существует, то находится город, начинающийся с первой буквы предыдущего города);
- если компьютер не смог найти подходящий город, то пользователь выигрывает.
class TownsRepository
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
class TownsRepository: """ Класс для извлечения информации о городах РФ """ def __init__(self): self.tw = None @ staticmethod def extract_town_outside(): """ Получаем базу городов из WEB и создаем файл с наименованиями городов """ import requests from bs4 import BeautifulSoup resp = requests.get( 'https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B3%D0%BE%D1%80%D0%BE%D0' '%B4%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8') with open('towns_of_rus.html', 'w', encoding="utf-8") as f: f.write(resp.text) with open("towns_of_rus.html", "r", encoding="utf-8") as f: html = f.read() soup = BeautifulSoup(html, features="html.parser") table = soup.find("table", attrs={"class": "standard sortable"}) with open("towns_base.txt", "w") as f: for row in table.find_all("tr")[2:]: city = row.find_all("td")[2].get_text().strip() f.write(f"\n")
class Town
1 2 3 4 5 6 7 8 9 10 11 12 13
class Town: """ класс Town, с основными атрибутами (начало и конец названия)""" def __init__(self, name: str): self.name = name self.first = name[0] self.last = name[-1] def __getstate__(self, name: str): print("Первая и последняя буква города:") self.name = name self.first = name[0] self.last = name[-1]
class ReadBase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class ReadBase: """ Посимвольное чтение списка городов для пользователя и для компьютера """ def __init__(self): self.Town = None @staticmethod def getTown(self): from extractor import TownsRepository TownsRepository.extract_town_outside() from towns import Town with open('towns_base.txt') as f: Towns = [Town(i) for i in f.read().split('\n')] return Towns
class Normalization
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
class Normalization: """Замена некоторых символов и приведение к единому регистру""" def __init__(self): self.ch = None @staticmethod def fix_replace(self, arr): """Поиск первой буквы, замена символа "Ё" на "Е", приведение к нижнему регистру, в случае неверных символов, "Ъ", "ь", "ы", "й","ъ" берется следующая буква.""" sym = None wrong_char = ("Ъ", "ь", "ы", "й", "ъ") for town in arr[::-1]: if town.first == self.upper(): sym = town.first.lower().replace('ё', 'е') if sym in wrong_char: break else: continue break return sym
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
from towns import Town from readouts import ReadBase from correct import Normalization def asserttown(s, Towns): return s in [x.name for x in Towns] def order(player, last_letter): if last_letter == "": return if player == 1: print('Введи название города на ', last_letter) order(0, user_order(last_letter)) if player == 0: print('Ход Машины') order(1, comp_order(last_letter)) if player > 1: print('Ошибка') def user_order(last_letter): player_word = input() print('ok') town = Town(player_word) while (town.first != last_letter.upper()) or (not asserttown(town.name, ReadBase.getTown(town))): print('Неправильный город Введите новый') player_word = input() town = Town(player_word) print('Игрок1 ввёл город', town.name) return town.last def comp_order(last_letter): computer_word = Normalization.fix_replace(last_letter, Town) if not computer_word: print('Компьютер сдаётся') return "" town = Town(computer_word.name) print('Игрок2 ввёл город', town.name) return town.last if __name__ == '__main__': order(1, 'А')
Я понимаю, что возможно можно было сделать класс очередь, чтобы в main было 10 строчек, а также организовать проход по всему слову, а не делать атрибутами класса Town только первый и последний символ. В общем, любая помощь будет полезна, не могу на данный момент сдвинуться с места. Приведу код ошибок:
Traceback (most recent call last): File "C:\Станкин\CODEMIKA\OOP Lesson 22\main.py", line 46, in order(1, 'А') File "C:\Станкин\CODEMIKA\OOP Lesson 22\main.py", line 15, in order order(0, user_order(last_letter)) File "C:\Станкин\CODEMIKA\OOP Lesson 22\main.py", line 27, in user_order while (town.first != last_letter.upper()) or (not asserttown(town.name, ReadBase.getTown(town))): File "C:\Станкин\CODEMIKA\OOP Lesson 22\readouts.py", line 15, in getTown Towns = [Town(i) for i in f.read().split('\n')] File "C:\Станкин\CODEMIKA\OOP Lesson 22\readouts.py", line 15, in Towns = [Town(i) for i in f.read().split('\n')] File "C:\Станкин\CODEMIKA\OOP Lesson 22\towns.py", line 6, in __init__ self.first = name[0] IndexError: string index out of range
Почему он пишет, что индекс строки выходит за границы диапазона, пока не пойму.