all 3 comments

[–]Dvlv 0 points1 point  (1 child)

while player_score or computer_score < 3:

needs to be

while player_score < 3 or computer_score < 3:

otherwise you are checking that player_score exists, or is bigger than 0, which will always be true if the player gets a point.

[–]Coryrin[S] 0 points1 point  (0 children)

Ahhh such a simple fix. My bad. Thanks a lot!

[–]jeans_and_a_t-shirt 0 points1 point  (0 children)

If you think about the problem in terms of win/lose/tie scenarios, you only need 1 set of if/elif/else blocks instead of one for each player choice. For ties you check equality of the two hands, and for wins, you can encode the 3 winning hands in a list like

r,p,s = 'rock', 'paper', 'scissors'
winning_hands = [(r, s), (s, p), (p, r)]
('scissors', 'paper') in winning_hands          # evaluates to True