Простая циклическая игра "камень-ножницы-бумага" на python
Простая циклическая игра в камень, ножницы, бумага на python, не работает функция счёта, что с ней не так?
import random
game = 'y'
# score_com = 0
# score_user = 0
# score_draw = 0
while game == 'y':
varibl = ['r', 's', 'p']
player = input('Выберите камень (r), ножницы (s) или бумага (p)')
comp = random.choice(varibl)
print('Игрок выбрал: ', player, 'Компьютер выбрал: ', comp)
def play():
if ((player == 's') and (comp == 'p')) or ((player == 'p') and (comp == 'r')) or ((player == 'r') and (comp == 's')):
return 'игрок'
elif comp == player:
return 'ничья'
else:
return 'комп'
print('Победил: ', play())
def score():
score_com = 0
score_user = 0
score_draw = 0
if play == 'игрок':
score_user += 1
elif play == 'комп':
score_com += 1
elif play =='ничья':
score_draw += 1
return score_user, score_user, score_draw
print(score())
game = input('Играем y/n?: ')
Ответы (2 шт):
Так у вас score
нигде не хранится, кроме как в цикле, где и создаётся. Так ещё и функции каждый раз по новой описываются, каждый цикл. Вытащите это всё из цикла, будет работать корректно. Кроме того, заметил позже, вы сравниваете строку и функцию play
, а не результат выполнения функции
Каждую итерацию цикла while
у Вас вызывается функция score()
, внутри которой значения счетчиков приводятся к нулю и высчитываются заново. Чтобы значения накапливались необходимо организовать хранение значений счёта вне функции score() и цикла while.
Поскольку это простой пример, то позволил себе как у Вас использовать глобальную переменную:
import random
game = 'y'
score = [0, 0, 0]
def set_score(position):
score[position] = score[position] + 1
def play(player_ch, comp_ch):
win_comb = [('r', 's'), ('s', 'p'), ('p', 'r')]
if player_ch == comp_ch:
return 'Ничья', 0
elif (player_ch, comp_ch) in win_comb:
return 'Игрок победил', 1
else:
return 'Компьютер победил', 2
while game == 'y':
player_ch = input('Выберите камень (r), ножницы (s) или бумага (p): ')
comp_ch = random.choice(['r', 's', 'p'])
print(f'Игрок выбрал: {player_ch} | Компьютер выбрал: {comp_ch}')
game_result = play(player_ch, comp_ch)
print(game_result[0])
set_score(game_result[1])
print(f'Счёт: ничья - {score[0]} | игрок - {score[1]} | компьютер - {score[2]}\n')
game = input('Играем y/n?: ')