Python Forum
Thread Rating:
  • 2 Vote(s) - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rock, Paper, scissors
#1
What is wrong with this Rock, Paper, Scissors game?
Ignore the indentation, it got messed up after copying.

Rock Paper Scissor
def  game():
import  random
Dic =  (1:"R", 2:"P", 3:"S")
PC_Choice = Dic[random.randint(1,  3)]
print  (PC_Choice)  #Debugging
print("Please  type R for Rock, P for Paper or S for Scissors")
User_Choice =  input().upper
if  PC Choice ==  "R"  and  User_Choice
print("The  PC chose rock, its a tie")
elif  PC_Choice ==  "R"  and  User_Choice ==  "P":
print("The PC  chose rock, you win.")
elif  PC_Choice ==  "R"  and  User_Choice ==  "S":
print("The  PC chose rock,  you  lose.")
elif  PC_Choice ==  "P"  and  User_Choice ==  "R":
print("The  PC chose paper, you lose.")
elif  PC_Choice ==  "P"  and  User_Choice ==  "P":
print("The  PC chose paper, its a tie")
elif  PC_Choice ==  "P"  and  User_Choice ==  "S":
print("The  PC chose paper, you win.")
elif  PC_Choice ==  "S"  and  User_Choice ==  "R":
print("The  PC chose scissors, you win.")
elif  PC_Choice ==  "S"  and  User_Choice ==  "P":
print("The  PC chose scissors, you lose.")
elif  PC_Choice ==  "S"  and  User_Choice ==  "S":
print("The  PC chose scissors, it's a tie.")
else:
print("Wait  what?")  #This is for testing the game
game()
game()
#Game loops
The output is always 'Wait, what?', although all of the data was entered correctly.
Reply
#2
(Jul-07-2017, 06:37 PM)OmarBrikaa Wrote: Ignore the indentation

One of the things we do not ignore is 'spacing'. It is one of the most important things things in Python. Refer to the Help Document section on how to properly post code.

As it stands, your script will never get past line 1. If line 4 is meant to be a dictionary, use curly braces '{}' not parenthesis '()'. In line 9, you forgot the underscore in "PC_Choice". If you want the script to keep repeating until the 'user' is a winner, use a 'while' loop with 'break' and continue'.

First, post the clean code and we will go from there.
If it ain't broke, I just haven't gotten to it yet.
OS: Windows 10, openSuse 42.3, freeBSD 11, Raspian "Stretch"
Python 3.6.5, IDE: PyCharm 2018 Community Edition
Reply
#3
(Jul-07-2017, 06:37 PM)OmarBrikaa Wrote: game()
game()
Do you call game() twice in a row? Or are you calling game() from within itself?

And why didn't you share the error message?
Reply
#4
I apologize for the delay. Here is the clean code from my pc.
#Rock Paper Scissor
def game():
   import random
   Dic = {1:"R", 2:"P", 3:"S"}
   PC_Choice = Dic[random.randint(1, 3)]
   print (PC_Choice) #Debugging
   print("Please type R for Rock, P for Paper or S for Scissors")
   User_Choice = input().upper

   if PC_Choice == "R" and User_Choice == "R":
       print("The PC chose rock, it's a tie")

   elif PC_Choice == "R" and User_Choice == "P":
       print("The PC chose rock, you win.")

   elif PC_Choice == "R" and User_Choice == "S":
       print("The PC chose rock, you lose.")

   elif PC_Choice == "P" and User_Choice == "R":
       print("The PC chose paper, you lose.")

   elif PC_Choice == "P" and User_Choice == "P":
       print("The PC chose paper, it's a tie")

   elif PC_Choice == "P" and User_Choice == "S":
       print("The PC chose paper, you win.")

   elif PC_Choice == "S" and User_Choice == "R":
       print("The PC chose scissors, you win.")
   elif PC_Choice == "S" and User_Choice == "P":
       print("The PC chose scissors, you lose.")
   elif PC_Choice == "S" and User_Choice == "S":
       print("The PC chose scissors, it's a tie.")
   else:
       print("Wait what?") #This is for testing the game

   game()
game()
#Game loops
Output:
Wait, what?
Reply
#5
You need parentheses after upper on line 8. Right now User_Choice is a method of a string, not the string itself, and is testing false against everything.

If you want to play over and over again, you want a loop, not calling the function from within itself. What you are doing is called recursion, and it is limited in Python, where as loops are not.

while True:
    game()
There are easier ways to do RPS. For example, have a dictionary of what beats what. The you can test if the two choices are equal (a tie), if what the PC's choice beats is equal to what the user chose (PC win), and if neither of those are true then the user wins.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#6
(Jul-10-2017, 12:03 PM)ichabod801 Wrote: You need parentheses after upper on line 8. Right now User_Choice is a method of a string, not the string itself, and is testing false against everything.

Thank you, that fixed it.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Rock Paper Scissors Project in Python ankitdixit 8 4,811 Feb-23-2024, 03:14 PM
Last Post: DPaul
  Trying to create a visual rock paper scissors game urmom33 1 1,027 Dec-03-2022, 09:12 PM
Last Post: deanhystad
  Rock paper scissors in python with "algorithm" Agat0 23 5,985 Mar-01-2022, 03:20 PM
Last Post: Agat0
  Problem restricting user input in my rock paper scissors game ashergreen 6 4,572 Mar-25-2021, 03:54 AM
Last Post: deanhystad
  Odd behavior with Rock Paper Scissor game DustinKlent 2 1,925 Aug-27-2020, 03:55 PM
Last Post: DustinKlent
  Trying to implement Best of 3 logic in rock paper scissors game ShAhCh 5 3,336 May-11-2020, 04:31 PM
Last Post: ShAhCh
  Rock Paper Scissors with dictionaries ewgreht 2 3,884 May-01-2020, 03:19 PM
Last Post: deanhystad
  Rock, Paper, Scissors.. Help..hidden bug xxunknownxx 4 2,655 Mar-19-2020, 02:46 AM
Last Post: jefsummers
  Problem with Basic Rock Paper Scissors code BirinderSingh 3 2,434 Sep-13-2019, 03:28 PM
Last Post: ichabod801
  Rock, Paper, Scissors Help jyou99 1 2,439 Mar-26-2018, 04:07 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020