Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 03.05.2021
Сообщений: 1
1

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

03.05.2021, 23:00. Показов 2991. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
написал код для игры КНБ:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from random import choice
my_choose = ["Камень", "Ножницы", "Бумага"]
computer_choose = choice(my_choose)
win = {"Камень":"Бумага", "Ножницы":"Камень", "Бумага": "Ножницы"}
print ("Камень, Ножницы, Бумага\n")
start = input("Ваш выбор: ")
print (computer_choose)
if my_choose == computer_choose:
    print("Ничья")
if (my_choose, computer_choose) in win:
    print('Вы победили')
else:
    print("Вы проиграли")
выводит:
Python
1
2
3
4
5
6
7
8
9
10
Камень, Ножницы, Бумага
 
Ваш выбор: Камень
Ножницы
Traceback (most recent call last):
  File "C:\Usersвгений\.PyCharm2018.3\config\scratches\scratch.py", line 10, in <module>
    if (my_choose, computer_choose) in win:
TypeError: unhashable type: 'list'
 
Process finished with exit code 1
с чем связано? и как можно проверить значение в словаре?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2021, 23:00
Ответы с готовыми решениями:

Камень ножницы бумага
Полина и Алина играют в &quot;Камень-ножницы-бумага&quot;, кто проиграет, тот моет посуду. Если ничья, то...

Камень-ножницы-бумага
Здравствуйте, новичок в Питоне, решил сделать обычную камень-ножницы-бумага с некоторыми фичами....

Камень-ножницы-бумага
Здравствуйте, задали написать простейшую игру на питоне, я выбрал камень,ножницы,бумага. Все в...

Камень, ножницы, бумага
Здравствуйте. Видел такую задачу на Java, решил попробовать сделать то же самое на Python, но не...

8
4921 / 2674 / 550
Регистрация: 07.11.2019
Сообщений: 4,397
04.05.2021, 06:02 2
Проверить значение в словаре можно по ключу. Открой учебник и посмотри как это правильно делается.
0
8 / 7 / 2
Регистрация: 29.09.2019
Сообщений: 54
06.05.2021, 22:20 3
а зачем вы сравниваете ["Камень", "Ножницы", "Бумага"] с choice(my_choose) ну итд по тексту сценария
0
705 / 351 / 104
Регистрация: 09.02.2018
Сообщений: 798
06.05.2021, 22:31 4
Сравнение - ==. = это присваивание.
0
Модератор
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
06.05.2021, 23:11 5
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
import random
 
win = 0
 
lose = 0
 
while True:
 
    tip = input("Камень, Ножницы или Бумага? - ")
 
    res = 0
 
    if tip.lower() == "камень":
        res = 1
 
    elif tip.lower() == "ножницы":
        res = 2
 
    elif tip.lower() == "бумага":
        res = 3
 
    else:
 
        print("Нет такого варианта!")
 
        continue
 
    rr = random.randrange(1, 3);
 
    if res == rr:
 
        win += 1
 
        print("Вы выиграли!")
 
    else:
 
        lose += 1
 
        print("Вы проиграли ;c")
 
    print("Счет - ", win, "/", lose, " (Выигрыши/Проигрыши)")
0
705 / 351 / 104
Регистрация: 09.02.2018
Сообщений: 798
06.05.2021, 23:48 6
Python
1
2
3
4
5
    if res == rr:
 
        win += 1
 
        print("Вы выиграли!")
Это же нелогично. Должна быть ничья тогда.

Добавлено через 25 минут
Вот так хорошо было бы:

Python
1
print((lambda my_choice, computer_choice:("Выбор компьютера: " + computer_choice + "\n" + ("Ничья." if my_choice == computer_choice else "Вы победили!" if my_choice == {"Камень":"Бумага", "Ножницы":"Камень", "Бумага": "Ножницы"}[computer_choice] else "Вы проиграли...")))(input("Камень, Ножницы, Бумага\n\nВаш выбор: ").capitalize(), __import__('random').choice(["Камень", "Ножницы", "Бумага"])))
0
8 / 7 / 2
Регистрация: 29.09.2019
Сообщений: 54
07.05.2021, 01:46 7
КулХацкеръ
8 строчка посмотри внимательней и немного и представь что там реально есть ну и так далее

Добавлено через 1 час 13 минут
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
from random import shuffle
 
 
base = {0: "R", 1: "S", 2: "P"}
 
while True:
    gamer = int(input("R-0, S-1, P2 : "))
    
    r = [0, 1, 2]
    shuffle(r)
    
    if gamer in r:
        print(f"gamer {base[gamer]} - mashine {base[r[0]]} ")
        if gamer == r[0]:
            print("equally")
        elif gamer == 0 and r[0] == 2:
            print("loss")
        elif gamer == 2 and r[0] == 0:
            print("win")
        elif gamer < r[0]:
            print("win")
        else:
            print("loss")
    else:
        print("error")
0
4921 / 2674 / 550
Регистрация: 07.11.2019
Сообщений: 4,397
07.05.2021, 06:22 8
Без if:
Python
1
2
3
4
5
6
7
from random import randint
base = ('камень', 'ножницы', 'бумага')
print (*base)
i=base.index(input('Ваш выбор: '))
j=randint(0,2)
print (f'Компьютер:  {base[j]}')
print(('Ничья', 'Вы победили', 'Вы проиграли')[j-i])
3
8 / 7 / 2
Регистрация: 29.09.2019
Сообщений: 54
07.05.2021, 09:31 9
u235 ++
здорово вы то о чем я

Добавлено через 11 минут
хотелось какую то цикличную структуру данных но чет не доперло про индексы
0
07.05.2021, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2021, 09:31
Помогаю со студенческими работами здесь

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

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

Зациклить игру Камень, Ножницы, Бумага
как сделать так, что-бы после выйгрыша/проигрыша/ничьей, программа не останавливалась, а заново...

Камень, ножницы, бумага, ром, пират
Скажите,пожалуйста, в чем ошибка a = input() b = input() if a == b: ...

Камень-ножницы-бумага, проблема с функцией
from random import randint def computer(n): n = randint(1,3) return n n = 0 ...

Камень, ножницы, бумага, со счетчиком до 3 побед игрока или бота
Я сделала этот код, там у меня когда набирается 3 очка у какой-либо стороны игра не заканчивается,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru