С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/163: Рейтинг темы: голосов - 163, средняя оценка - 4.87
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31

Написание игры "Виселица"

05.07.2018, 18:35. Показов 29973. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
import random
words= '''аист акула бабуин баран барсук бобр бык варан верблюд волк вомбат воробей ворон выдра
голубь гусь додо дятел енот ехидна еж жаба жираф журавль заяц зебра землеройка зяблик
игуана кабан казуар кайман какаду кальмар камбала канарейка каракатица карп кенгуру
киви кит лама ламантин ласка ласточка лебедь лев лемур ленивец леопард лиса лягушка
мотылек муравьед муравей мангуст медведь морж муха мышь медуза нарвал носорог орел омар олень овцебык
осьминог орел осел оса овца опоссум обезьяна паук пескарь пингвин пиранья попугай
пчела рысь рыба росомаха страус сурок стрекоза сорока сова снегирь сокол собака слон
слон скорпион скворец скат сельдь свинья сурикат скунс слизень светлячок тюлень тукан тигр
трясогуска термит тетерев тунец тритон тарантул таракан тля утконос уж устрица улитка угорь фазан фламинго
форель хорек хомяк хамелеон цапля цесарка цикада черепаха червь чайка шимпанзе шиншилла
щука эму ящерица ястреб як ягуар'''.split()
attempt=0
def chosing():
    s_w=words[random.randint(0,len(words))]
    dead_people=['1','2','3','4','5','6']
    print(s_w)
    return s_w
def intro():
    k=''
    print('тема-"животные"')
    for i in range(len(chosing())):
        k=k+'_'+' '
    print(k)
    return k
def step():
    print('введи букву:',end='')
    letter=input()
    while letter not in 'абвгдеёжзиклмнопрстуфхцчшщъыьэюя':
        letter=input('введи букву ')
    if letter in chosing():
        for i in range(len(chosing())):
            if chosing()[i]==letter:
                intro()[i]=letter
        print(intro())
    elif letter not in chosing():
        print('не угадал(')
chosing()
intro()
step()
пытался написать игру 'виселица' . при проверке данного фрагмента кода выдает:
дятел
тема-"животные"
лемур
_ _ _ _ _
введи букву:д
тукан
хамелеон
не угадал(. зачем он несколько раз выписывает животных? буду очень благодарен
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2018, 18:35
Ответы с готовыми решениями:

Написание игры "виселица" или любой другой не сложной игры
нужна помощь в написании игры "виселица" или любой другой не сложной игры на с# по сети

код игры виселица
нужно составить программу виселицы к слову морковь Добавлено через 1 час 26 минут слово нужно брать из файла который находится на...

Слова для игры Виселица
Делаю игру "Виселица", всё уже готово, но не могу найти словари со словами для неё. Составлять самому базы, где в каждой минимум сто слов...

9
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
06.07.2018, 11:10
Используйте теги форматирования кода.
0
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
09.07.2018, 16:27  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Используйте теги форматирования кода.
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
09.07.2018, 16:39
Цитата Сообщение от chdanil Посмотреть сообщение
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
Возьмите лучше нормальный код

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
import random
 
words = ["аист", "акула", "бабуин", "баран", "барсук", "бобр", "бык", "варан", "верблюд", "волк", "вомбат", "воробей", "ворон", "выдра",
"голубь", "гусь", "додо", "дятел", "енот", "ехидна", "еж", "жаба", "жираф", "журавль", "заяц", "зебра", "землеройка", "зяблик",
"игуана", "кабан", "казуар", "кайман", "какаду", "кальмар", "камбала", "канарейка", "каракатица", "карп", "кенгуру",
"киви", "кит", "лама", "ламантин", "ласка", "ласточка", "лебедь", "лев", "лемур", "ленивец", "леопард", "лиса", "лягушка",
"мотылек", "муравьед", "муравей", "мангуст", "медведь", "морж", "муха", "мышь", "медуза", "нарвал", "носорог", "орел", "омар", "олень", "овцебык",
"осьминог", "орел", "осел", "оса", "овца", "опоссум", "обезьяна", "паук", "пескарь", "пингвин", "пиранья", "попугай",
"пчела", "рысь", "рыба", "росомаха", "страус", "сурок", "стрекоза", "сорока", "сова", "снегирь", "сокол", "собака", "слон",
"слон", "скорпион", "скворец", "скат", "сельдь", "свинья", "сурикат", "скунс", "слизень", "светлячок", "тюлень", "тукан", "тигр",
"трясогуска", "термит", "тетерев", "тунец", "тритон", "тарантул", "таракан", "тля", "утконос", "уж", "устрица", "улитка", "угорь", "фазан", "фламинго",
"форель", "хорек", "хомяк", "хамелеон", "цапля", "цесарка", "цикада", "черепаха", "червь", "чайка", "шимпанзе", "шиншилла",
"щука", "эму", "ящерица", "ястреб", "як", "ягуар"]
word=words[random.randrange(5)]
len_word=len(word)
health = 10
test=False
used_letters=""
win_word=[]
# заполнение массива для слова в игре
for i in range(len(word)):
    win_word+="_"
 
while len_word != 0 and health != 0:
    test = False
    # ввод буквы и проверка на повтор
    while True:
        letter = input("\nвведите букву ")
        if letter in used_letters or len(letter)>1:
            print("\nНе больше одного символа, попробуйте снова!")
        else:
            used_letters+=letter
            break
    count=0
    for i in word:
        if letter in i:
            len_word -= 1
            test=True
            win_word[count]=letter
        count+=1
 
 
 
    if not test:
        health -= 1
        print("Неверно")
    else:
        print("Верно")
        print(win_word)
 
    print("Ваше здоровье = ", health)
 
if(len_word == 0):
    print("\nПОБЕДИТЕЛЬ!!! Слово было", word.upper())
else:
    print("\nВЫ ПРОИГРАЛИ! ПОПРОБУЙТЕ СНОВА!")
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
09.07.2018, 17:28
Цитата Сообщение от chdanil Посмотреть сообщение
Но зачем он выполняет блок chosing() несколько раз?
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
Цитата Сообщение от chdanil Посмотреть сообщение
Python
1
2
    if letter in chosing(): 
        for i in range(len(chosing())):
1
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
11.07.2018, 21:49  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
странно, вроде же не вызывается

Добавлено через 3 минуты
Цитата Сообщение от ТабуретY Посмотреть сообщение
Возьмите лучше нормальный код

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
import random
 
words = ["аист", "акула", "бабуин", "баран", "барсук", "бобр", "бык", "варан", "верблюд", "волк", "вомбат", "воробей", "ворон", "выдра",
"голубь", "гусь", "додо", "дятел", "енот", "ехидна", "еж", "жаба", "жираф", "журавль", "заяц", "зебра", "землеройка", "зяблик",
"игуана", "кабан", "казуар", "кайман", "какаду", "кальмар", "камбала", "канарейка", "каракатица", "карп", "кенгуру",
"киви", "кит", "лама", "ламантин", "ласка", "ласточка", "лебедь", "лев", "лемур", "ленивец", "леопард", "лиса", "лягушка",
"мотылек", "муравьед", "муравей", "мангуст", "медведь", "морж", "муха", "мышь", "медуза", "нарвал", "носорог", "орел", "омар", "олень", "овцебык",
"осьминог", "орел", "осел", "оса", "овца", "опоссум", "обезьяна", "паук", "пескарь", "пингвин", "пиранья", "попугай",
"пчела", "рысь", "рыба", "росомаха", "страус", "сурок", "стрекоза", "сорока", "сова", "снегирь", "сокол", "собака", "слон",
"слон", "скорпион", "скворец", "скат", "сельдь", "свинья", "сурикат", "скунс", "слизень", "светлячок", "тюлень", "тукан", "тигр",
"трясогуска", "термит", "тетерев", "тунец", "тритон", "тарантул", "таракан", "тля", "утконос", "уж", "устрица", "улитка", "угорь", "фазан", "фламинго",
"форель", "хорек", "хомяк", "хамелеон", "цапля", "цесарка", "цикада", "черепаха", "червь", "чайка", "шимпанзе", "шиншилла",
"щука", "эму", "ящерица", "ястреб", "як", "ягуар"]
word=words[random.randrange(5)]
len_word=len(word)
health = 10
test=False
used_letters=""
win_word=[]
# заполнение массива для слова в игре
for i in range(len(word)):
    win_word+="_"
 
while len_word != 0 and health != 0:
    test = False
    # ввод буквы и проверка на повтор
    while True:
        letter = input("\nвведите букву ")
        if letter in used_letters or len(letter)>1:
            print("\nНе больше одного символа, попробуйте снова!")
        else:
            used_letters+=letter
            break
    count=0
    for i in word:
        if letter in i:
            len_word -= 1
            test=True
            win_word[count]=letter
        count+=1
 
 
 
    if not test:
        health -= 1
        print("Неверно")
    else:
        print("Верно")
        print(win_word)
 
    print("Ваше здоровье = ", health)
 
if(len_word == 0):
    print("\nПОБЕДИТЕЛЬ!!! Слово было", word.upper())
else:
    print("\nВЫ ПРОИГРАЛИ! ПОПРОБУЙТЕ СНОВА!")
Подобная ошибка у меня уже не первый раз. Я новичок. Хочу разобраться,а не отступить.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.07.2018, 11:18
chdanil, в новом варианте не вызывается, да.
0
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
12.07.2018, 13:59  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
Я попробовал вообще убрать блок, содержащий данный фрагмент кода. Ошибка остается.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.07.2018, 14:02
chdanil, ну не знаю, тут разбираться надо. Отладку пробовали?
0
9 / 9 / 3
Регистрация: 05.01.2016
Сообщений: 17
12.07.2018, 17:42
Лучший ответ Сообщение было отмечено chdanil как решение

Решение

Цитата Сообщение от chdanil Посмотреть сообщение
странно, вроде же не вызывается
Цитата Сообщение от chdanil Посмотреть сообщение
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
У вас слово определяется несколько раз, т.к. функция chosing вызывается несколько раз из разных мест. Сами посмотрите:

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
import random
words= '''аист акула бабуин баран барсук бобр бык варан верблюд волк вомбат воробей ворон выдра
голубь гусь додо дятел енот ехидна еж жаба жираф журавль заяц зебра землеройка зяблик
игуана кабан казуар кайман какаду кальмар камбала канарейка каракатица карп кенгуру
киви кит лама ламантин ласка ласточка лебедь лев лемур ленивец леопард лиса лягушка
мотылек муравьед муравей мангуст медведь морж муха мышь медуза нарвал носорог орел омар олень овцебык
осьминог орел осел оса овца опоссум обезьяна паук пескарь пингвин пиранья попугай
пчела рысь рыба росомаха страус сурок стрекоза сорока сова снегирь сокол собака слон
слон скорпион скворец скат сельдь свинья сурикат скунс слизень светлячок тюлень тукан тигр
трясогуска термит тетерев тунец тритон тарантул таракан тля утконос уж устрица улитка угорь фазан фламинго
форель хорек хомяк хамелеон цапля цесарка цикада черепаха червь чайка шимпанзе шиншилла
щука эму ящерица ястреб як ягуар'''.split()
attempt=0
def chosing():
    s_w=words[random.randint(0,len(words))]
    dead_people=['1','2','3','4','5','6']
    print("Вызвано из chosing")
    print(s_w)
    return s_w
def intro():
    k=''
    print('тема-"животные"')
    for i in range(len(chosing())):
        print("Вызвано из intro")
        k=k+'_'+' '
    print(k)
    return k
def step():
    print('введи букву:',end='')
    letter=input()
    while letter not in 'абвгдеёжзиклмнопрстуфхцчшщъыьэюя':
        letter=input('введи букву ')
    if letter in chosing():
        print("Вызвано из step")
        for i in range(len(chosing())):
            if chosing()[i]==letter:
                intro()[i]=letter
        print(intro())
    elif letter not in chosing():
        print('не угадал(')    
chosing()
intro()
step()
Запускаем:

Вызвано из chosing
ласка
тема-"животные"
Вызвано из chosing
пингвин
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
_ _ _ _ _ _ _
введи букву:а
Вызвано из chosing
жираф
Вызвано из step
Вызвано из chosing
муравей
Вызвано из chosing
лемур
Вызвано из chosing
бабуин
тема-"животные"
Вызвано из chosing
рысь
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
_ _ _ _

Разберетесь что к чему? И вызов chosing на 38й строке зачем, если эта функция потом снова из intro вызывается? Слово то потом снова переопределяется.

Добавлено через 10 минут
Каждый раз, когда у вас написано chosing(), функция выбирает новое слово и снова его пишет. Вы не сохраняете результат первого вызова функции в переменной, которую потом можно использовать дальше, а просто снова и снова вызываете функцию, которая снова и снова выбирает новое слово. Написали одну букву, а слово уже изменилось.
П.С. Не успел добавить к оригинальному посту.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2018, 17:42
Помогаю со студенческими работами здесь

Создание меню игры виселица
Нужно создать меню выбора тем и сложности для игры виселица 1 форма - позволяет выбрать тему(по типу "животные",...

Создайте консольную версию игры «Виселица»
Народ прошу помогите я с другими лабами к пятнице не успеваю а это самое сложное. Решил попросить потому что уже в отчаяни. Создайте...

Как лучше реализовать графику для игры "Виселица"?
Есть игра "Виселица", написанная на С++, нужно реализовать графику. Но как лучше это сделать и что для этого использовать? Нельзя...

Рисование в image по частям для игры "Виселица"
нужно написать виселицу. проблем а в том, как выводить по очереди картинку и как это выглядит в с# кто знает помогите.

Проблемы с кодом игры "Виселица"
Этот код уже был в одной теме, но не доработан, вылезает ошибка... #pragma endregion char word; int strok; int...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru