I'd just appreciate if anyone can suggest some incremental improvements that would help me to think better like a coder.
Here is the very basic RPS (rock, paper, scissors).
One thing I may next add is some tests.
import random
import sys
from enum import Enum
welcome='''
Enter 1 for Rock, 2 for Paper, 3 for Scissor
'''
user_val = int(input(welcome))
class RPS(Enum):
Rock=1
Paper=2
Scissor=3
results = {
"user": "You won.",
"py": "You lost.",
"tie": "Tie."
}
def who_wins(user_val, py_val, result):
py_val =str(RPS(py_val)).replace("RPS.","")
user_val=str(RPS(user_val)).replace("RPS.","")
return "You chose {}, Python chose {}. Result: {}".format(user_val, py_val, result)
is_number = isinstance(user_val,int)
if(is_number):
outside_boundary=user_val < 1 or user_val > 3
if(outside_boundary):
sys.exit('you must enter 1, 2 or 3.')
# if input is user_valid, we choose a random user_value
our_val = random.randint(1,3)
# case 1: user chooses Rock
if(user_val==RPS.Rock.value):
if(our_val==RPS.Rock.value):
print(who_wins(user_val, our_val, results["tie"]))
else:
print(who_wins(user_val,our_val, results["user"]))
# case 2 user chooses Paper
elif(user_val==RPS.Paper.value):
if(our_val==RPS.Rock.value or our_val==RPS.Scissor.value):
print(who_wins(user_val, our_val, results['py']))
else:
print(who_wins(user_val,our_val, results["tie"]))
# case 3 user chooses scissor
else:
if(our_val==RPS.Rock.value):
print(who_wins(user_val, our_val, results["py"]))
elif(our_val==RPS.Scissor.value):
print(who_wins(user_val, our_val, results["tie"]))
else:
print(who_wins(user_val, our_val, results["user"]))