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

Камень, ножницы, бумага – мини-игра

02.08.2022, 14:00. Показов 20761. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте. Решил тренироваться по мини проектам для новичков на сайте https://proglib.io/p/40-proekt... 2022-05-13. Задача такая: Камень, ножницы, бумага – мини-игра, в которую можно играть в одиночку с компьютером. При разработке потребуются знания генератора случайных чисел, вывод на экран, обработка ввода, цикл while и оператор if/else.
1. Код написал, но не пойму как и зачем туда вставить цикл while.
2. Посмотрите код, опытным взглядом, может где еще стоит поправить

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
import random
A = ("камень", "ножницы", "бумага")
a = random.choice(A)
print("Введите одно из трех: камень, ножницы, либо бумага: ")
n = str(input())
 
if a == n:
    print(a)
    print("Ничья")
 
elif a == "камень" and n == "ножницы":
    print(a)
    print("Ты проиграл!")
 
elif a == "ножницы" and n == "бумага":
    print(a)
    print("Ты проиграл!")
 
elif a == "бумага" and n == "камень":
    print(a)
    print("Ты проиграл!")
 
else:
    print(a)
    print("Ты выйграл")
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.08.2022, 14:00
Ответы с готовыми решениями:

Игра камень ножницы бумага
Я сделал игру камень ножницы бумага, но не могу придумать как сделать так чтобы, пк спросил 'Хотите переиграть', если нажмет да то игра...

КАМЕНЬ, НОЖНИЦЫ, БУМАГА ЧЕРЕЗ ООП
Задание: При помощи ООП и классов создайте программу «Rock, Paper, Scissors» или же «Камень, ножницы, бумага». Ваша задача состоит в том...

Написать игру в "камень-ножницы-бумага"
33 Написать игру в "камень-ножницы-бумага" против компьютера. Запустить игру в бесконечном цикле. Запросить ввод от пользователя (R -...

8
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
02.08.2022, 14:05
Цитата Сообщение от EVGEN-BATYR Посмотреть сообщение
зачем туда вставить цикл while
что бы играть до посинения а не запускать код каждый раз после одной игры
Python
1
2
3
4
while True: 
    код игры
    вопрос выйти или продолжить
    условие что делать согласно вопросу играть дальше или завершить цикл
0
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
02.08.2022, 14:11
Цитата Сообщение от EVGEN-BATYR Посмотреть сообщение
1. Код написал, но не пойму как и зачем туда вставить цикл while.
Попробуйте сделать, что бы играть можно было долго, а не 1 раз (можно добавить ведение счета, что бы интереснее было)

Python
1
2
3
4
5
6
7
while True:
    s = input("Введите одно из трех: камень, ножницы, либо бумага: ")
    if s in ["камень", "ножницы", "бумага"]:
        print(s)
    else:
        print('Вы ввели не то поэтому покидаете игру')
        break
1
13 / 7 / 6
Регистрация: 12.07.2022
Сообщений: 17
02.08.2022, 14:18
цикл while можно вставить чтобы игра была не на 1 ход, а на большее кол-во, например игра до 3 и более побед
Pascal
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
import random
def kamen_nojnisi_bymaga():
    win=0
    wor=0
    print('Здарова это игра КНБ, пиши названия с большой буквы иначе тебе gg')
    while wor != 3 and win != 3:
        random_a=random.choice(['Бумага','Ножницы','Камень'])
    
        vibor=input()
        if vibor == 'Бумага':
            if random_a == 'Бумага':
                print('Ничья попробуй ещё раз')
            elif random_a == 'Ножницы':
                print('Проигрыш давай соберись')
                wor+=1
            elif random_a == 'Камень':
                print('Красава ты выиграл')
                win+=1
        elif vibor == 'Ножницы':
            if random_a == 'Ножницы':
                print('Ничья попробуй ещё раз')
            elif random_a == 'Камень':
                print('Проигрыш давай соберись')
                wor+=1
            elif random_a == 'Бумага':
                print('Красава ты выиграл')
                win+=1
        elif vibor == 'Камень':
            if random_a == 'Камень':
                print('Ничья попробуй ещё раз')
            elif random_a == 'Бумага':
                print('Проигрыш давай соберись')
                wor+=1
            elif random_a == 'Ножницы':
                print('Красава ты выиграл')
                win+=1
    if wor == 3:
        print('Игра окончена ты невезучий')
    elif win == 3:
        print('ты выиграл бота. не радуйся')
    return ()
kamen_nojnisi_bymaga()
Добавлено через 1 минуту
Цитата Сообщение от EVGEN-BATYR Посмотреть сообщение
n = str(input())
Python
1
n = input()
1
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
02.08.2022, 14:53
EVGEN-BATYR, мой вариант.

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
import random
 
variant = (1,2,3)
win_combo = ((2,3), (3,1), (1,2))
count_win_men = 0
count_win_comp = 0
 
while True:
 
    print('__________\n Сделайте выбор \n 1 - камень, 2 - ножницы, 3 бумага')
    your_choise = int(input())
    if your_choise in variant:
        comp_choise = random.choice(variant)
        print(f'Comp поставил: {comp_choise}')
        if comp_choise == your_choise:
            print(f' Ничья! Счет Вы:{count_win_men} vs Comp{count_win_comp}')
            continue
        elif (your_choise, comp_choise) in win_combo:
            count_win_men += 1
            print(f' Вы выиграли! Счет Вы:{count_win_men} vs Comp: {count_win_comp}')
            continue
        else:
            count_win_comp += 1
            print(f' Вы проиграли! Счет Вы:{count_win_men} vs Comp: {count_win_comp}')
            continue
    else:
        print('Вы ввели не то, давайте заново!')
        continue
Добавлено через 8 минут
Что бы я отметил для себя (может и Вам полезно будет):

1. Старайся не запрашивать с пользователя строку, потому что не угадаешь что он введет: бУмага, бумага, бyмага (вместо у англ. 'y') и т.д.
2. Если видишь что у тебя получается куча if-elif попробуй сделать например выигрышные комбинации (win_combo) и сверяйся с ними, остальные будут проигрышными
3. Все константы и вещи которые не меняются (те же выигрышные комбинации) выноси на верх кода, что бы они не болтались по всему тексту, если придется менять.

То что написали свой вариант кода, от меня +1
2
5 / 5 / 0
Регистрация: 25.01.2022
Сообщений: 157
02.08.2022, 16:25  [ТС]
Спасибо за ответ!
Спасибо! Прикольно)
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
02.08.2022, 17:31
Еще прикольнее обратить свой взор вниз страницы. Там столько ссылок на такую же задачу
1
34 / 28 / 6
Регистрация: 23.06.2021
Сообщений: 145
03.08.2022, 19:29
Python
1
2
3
4
5
6
7
8
9
while True:
    test = input('Введите "Камень", "Ножницы" или "Бумага".')
 
    print((
        "Камень" if test == "Ножницы"
        else "Ножницы" if test == "Бумага"
        else "Бумага" if test == "Камень"
        else "Идиот"
    ) + ", ты проиграл")
1
0 / 0 / 0
Регистрация: 09.08.2022
Сообщений: 1
10.08.2022, 12:44
Сделал свой вариант, может кому будет интересно.
Для обработки input проще использовать блоки try except else, они позволяют повторять цикл при ошибке

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
from random import randint
 
 
rock_paper_scissors = ['камень', 'ножницы', 'бумага']
 
win_score = 0
lose_score = 0
draw_score = 0
 
print('(1-3) для выбора. 0 для выхода')
print(rock_paper_scissors, '\n')
 
while True:
    print(f'Побед> {win_score}, поражений> {lose_score}, ничьи> {draw_score}')
 
    try:
        user_input = int(input('Выберите чем сражаетесь> '))
 
    except ValueError as e:
        print('То что вы ввели не является числом>', e, '\n')
 
    else:
        if user_input == 0: break
 
        index = user_input - 1
        random_choise = rock_paper_scissors[randint(0, 2)]
 
        try:
            user_choise = rock_paper_scissors[index]
 
        except IndexError as e:
            print('Неверное число>', e, '\n')
            
        else:
            print('')
            print('Выбор противника>', random_choise)
            print('Ваш выбор>', user_choise, '\n')
 
            if user_choise != random_choise:
                if user_choise == 'камень' and random_choise == 'ножницы':
                    print('Победа!>\n')
                    win_score += 1
                elif user_choise =='ножницы' and random_choise == 'бумага':
                    print('Победа!>\n')
                    win_score += 1
                elif user_choise == 'бумага' and random_choise == 'камень':
                    print('Победа!>\n')
                    win_score += 1
                else:
                    print('Поражение!>\n')
                    lose_score += 1
            else:
                print('Ничья!>\n')
                draw_score += 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2022, 12:44
Помогаю со студенческими работами здесь

Игра Камень Ножницы Бумага
Добрый день! Недавно начал изучать Python. Мне нужна помощь, не могу разобраться в коде который набираю по книге Эл Свейгарт...

Игра "Камень, ножницы, бумага"
Играем с ботом в «цуефа». С клавиатуры вводим «камень», «ножницы» или «бумага». Бот рандомно выбирает также «камень», «ножницы» или...

Игра - "Камень, Ножницы, Бумага"
Решил написать игру, но видимо ошибся в расчетах. Не могу понять в чем проблема. Вот код: import random print("---Game---") ...

Игра "камень, ножницы, бумага"
Помогите советом, как сделать код более компактным. Все работает, но мне кажется выглядит не очень. import random while True: ...

Игра "Камень, ножницы, бумага"
нужно дополнить игру запросом на количество раундов, и выводить счёт после каждого раунда. При этом ничья не должна влиять на счётчик...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru