С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.07.2021
Сообщений: 18

Виселица

06.03.2025, 02:07. Показов 1482. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, не понимаю почему моя программа после любого ввода русской буквы выводит:
Введите букву русского алфавита:о
Вы уже вводили буквы: /
Вы не угадали букву
У вас осталось 6 попыток

(И буду благодарна если будут исправления и не по теме моего вопроса)
(файл со словами для кода находится на пк в папке с кодом (для форума он очень большой поэтому ссылка на яндекс.диск)
Python
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from random import choice 
secret_word = choice(open("russian_nouns.txt", encoding="utf-8").read().split("\n")).upper() 
 
 
def greet():
    print('Здравствуйте, это игра виселица')
    print('Правила:') 
    print('Программа загадывает рандомное слово из словаря ваша цель его угадать за определенное кол-во попыток')
    print('1. У вас ограниченное кол-во попыток (по умолчанию 7). Попытки списываются за каждую не верно угаданную букву')
    print('2. Вводить стоит только буквы русского алфавита')
 
def chek_letter(used_letter, tries_used):
    letter = input('Введите букву русского алфавита:')
    letter = letter.upper()
    tries_used += 1
    print(f'Вы уже вводили буквы: {used_letter}')
    # if isinstance(letter, str):
    #     return chek_letter
    if len(str(letter)) != 1:
        return chek_letter(used_letter, tries_used)
    elif letter not in 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ':
        return chek_letter(used_letter, tries_used)
    elif letter in used_letter:
        print("Вы уже вводили эту букву")
        return chek_letter(used_letter, tries_used)
    else:
        used_letter += letter
        return letter
 
def spoller_word(used_letter, secret_word, spollered_word):
    for char in secret_word:
        if char in used_letter:
            spollered_word += char
        else: 
            spollered_word += '*'
    return spollered_word
 
def sclonenie_tries(tries):
    if tries % 10 == 1 and tries != 11:
        return 'попытка'
    elif str(tries % 10) in '234' and tries != 12 and tries != 13 and tries != 14:
        return 'попытки'
    else:
        return 'попыток' 
 
def chek_print(used_letter, tries, secret_word, spollered_word):
    if used_letter[-1] in secret_word:
        print(f'Вы угадали букву! Ваше слово: {spoller_word(used_letter, secret_word, spollered_word)}')
    else:
        print('Вы не угадали букву :(')
        tries -= 1
        print(f'У вас осталось {tries} {sclonenie_tries(tries)}')
 
spollered_word = '*' * len(secret_word)
used_letter = '/'
tries = 7
tries_used = 0
greet()
while spoller_word != secret_word:
    chek_letter(used_letter, tries_used)
    chek_print(used_letter, tries, secret_word, spollered_word)
print(f'Ура! Вы угадали слово {secret_word} за {tries_used} {sclonenie_tries(tries_used)}')
требования от учителя если понадобятся (но думаю это чисто косметические требования):
• программа не должна «падать» ни при каких обстоятельствах (даже если пользователь вводит не то, что его просят)
• перед каждым пользовательским вводом (непосредственно перед ним!) должно быть объясение того, что сейчас от пользователя ожидается • после каждого хода сообщать о том, успешен он был или нет
• хранить историю попыток и сообщать о повторном вводе буквы (не считая это попыткой, если буквы нет в слове)
• после каждого хода показывать текущее состояние слова: отгаданные буквы должны быть указаны, а вместо неотгаданных какие-нибудь понятные значки («*», «-» или ещё что-нибудь).
• все сообщения пользователю, включающие числительные, должны быть написаны грамотно, на русском языке (никаких «осталась 2 попыток»!).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2025, 02:07
Ответы с готовыми решениями:

Игра виселица
Не знаю как случайно выбирать из списка строку определенной дины, от 5 до 8 включительно. import requests import random ...

Игра Виселица на питоне
Всем привет я уже какой день не могу решить задачу ООП на питоне я на чал кодить но не знаю что делать дальше помогите пж: именно через...

Пишу на tkinter игру виселица. Высвечивается ошибка, что переменная slovo не найдена в данном коде
Глобальной переменную делал не помогло. spisok_knopok= pravila = """Привет, друг! Я вижу ты хочешь поиграть в виселицу! Давай я...

1
0 / 0 / 0
Регистрация: 15.07.2021
Сообщений: 18
06.03.2025, 16:16  [ТС]
Python
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from random import choice 
def greet():
    print('Здравствуйте, это игра виселица')
    print('Правила:') 
    print('Программа загадывает рандомное слово из словаря, ваша цель его угадать за определенное кол-во попыток')
    print('1. У вас ограниченное кол-во попыток (по умолчанию 7). Попытки списываются за каждую не верно угаданную букву')
    print('2. Вводить стоит только буквы русского алфавита')
    print('Загаданное слово:', spollered_word)
    print('')
 
def check_letter(used, tries_used):
    letter = input('Введите букву русского алфавита: ')
    letter = letter.upper()
    if not isinstance(letter, str):
        print('')
        return check_letter(used_letter, tries_used)
    elif len(letter) != 1:
        print('')
        return check_letter(used_letter, tries_used)
    elif letter in used:
        print("Вы уже вводили эту букву")
        return check_letter(used_letter, tries_used)
    elif letter in 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ':
        return letter
    else:
        print('')
        return check_letter(used_letter, tries_used)
 
def spoller_word(used, sw):
    k = ''
    for char in sw:
        if char in used:
            k += char
        else: 
            k += '*'
    return k
 
def sclonenie_tries(tries):
    if tries % 10 == 1 and tries != 11:
        return 'попытка'
    elif str(tries % 10) in '234' and tries != 12 and tries != 13 and tries != 14:
        return 'попытки'
    else:
        return 'попыток' 
 
def check_print(used, tries, secret_word):
    if used[-1] in secret_word:
        print(f'Вы угадали букву! Ваше слово: {spoller_word(used_letter, secret_word)}')
    else:
        print('Вы не угадали букву :(')
        print(f'У вас осталось {tries} {sclonenie_tries(tries)}')
 
 
secret_word = choice(open("russian_nouns.txt", encoding="utf-8").read().split("\n")).upper()
# print(secret_word)
spollered_word = '*' * len(secret_word)
used_letter = ' '
tries = 7
tries_used = 0
greet()
tries -= 1  # эта строчка нужна из-за особенностей программы, что бы не заморачиваться с кол-вом попыток
while spollered_word != secret_word and tries != 0:
    # print(spollered_word)
    # print(secret_word)
    letter = check_letter(used_letter, tries_used)
    used_letter += letter
    print(f'Вы уже вводили буквы: {used_letter}')
    tries_used += 1
    spollered_word = spoller_word(used_letter, secret_word)
    check_print(used_letter, tries, secret_word)
    if not used_letter[-1] in secret_word:
        tries -= 1
    print('')
if tries >= 0 and spollered_word == secret_word:
    print(f'Ура! Вы угадали слово {secret_word} за {tries_used} {sclonenie_tries(tries_used)}')
else: 
    print(f'У вас не осталось попыток :(. Вы проиграли... Компьютер загадал слово: {secret_word}')
На уроке исправила, вроде работает. Если у кого-нибуть есть предложения эстетические то можете написать пожалуйста
И просто если кому-то понадобится такая криворукая виселица
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2025, 16:16
Помогаю со студенческими работами здесь

Игра "виселица", не выводятся в слове отгаданные буквы
import random HANGMAN = (""" """) МAX_WRONG = len(HANGMAN) - 1 WORDS = ("") word = random.choice(WORDS) so_far...

Вывод элементов списка без скобок и запятых в игре "Виселица"
Очень прошу!! Скажите как сделать чтобы угаданные буквы(маленький скрин 1) выводились без квадратных скобок и запятых. То есть грамотно...

Написание игры "Виселица"
import random words= '''аист акула бабуин баран барсук бобр бык варан верблюд волк вомбат воробей ворон выдра голубь гусь додо дятел...

Программа "виселица"
import random print('+----+' + '\n' + ' |' + '\n' + ' |' + '\n' + ' |' + '\n' + ' ---') slovar = slovo =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru