我已经制作了一个RPS应用程序,但它在用户提供输入后退出。它结束没有错误。
法典:
def game(USER, COMPUTER):
#GO THROUGH OBVIOUS RESULTS FIRST
if USER == "ROCK" and COMPUTER == "ROCK":
print("It's a draw.nI picked", COMPUTER)
if USER == "PAPER" and COMPUTER == "PAPER":
print("It's a draw.nI picked", COMPUTER)
if USER == "SCISSORS" and COMPUTER == "SCISSORS":
print("It's a draw.nI picked", COMPUTER)
#USER PICKS PAPER
if USER == "PAPER" and COMPUTER == "ROCK":
print("YES! I WIN!!!!")
time.sleep(2)
print("Oh, wait. No I didn't. You won.nI chose", COMPUTER)
if USER == "PAPER" and COMPUTER == "SCISSORS":
print("YEOOOO! I WON! I picked", COMPUTER)
#USER PICKS ROCK
if USER == "ROCK" and COMPUTER == "PAPER":
print("HA! NO WAY! I WON! I picked", COMPUTER)
if USER == "ROCK" and COMPUTER == "SCISSORS":
print("Awwwww. You broke me... nI picked", COMPUTER)
#USER PICKS SICSSORS
if USER == "SICSSORS" and COMPUTER == "ROCK":
print("*YOU WERE SMASHED INTO THE SHAPE OF AN L. FOR LOSER.*nI picked", COMPUTER)
if USER == "SICSSORS" and COMPUTER == "PAPER":
print("*SNIP SNIP SNIP*")
time.sleep(1)
print("*IS THROWN IN BIN*")
time.sleep(1)
print("*WISPERS FROM BIN* Hey, that means you won...nI picked", COMPUTER)
print("ROCK PAPER SCISSORS!")
time.sleep(1)
print("Ready?")
time.sleep(1)
#get user input
USER=str(input("nWHAT WILL YOU CHOSE!nROCK,nPAPERnor SCISSORS?nINPUT YOUR ANSWER NOW: "))
#RANDOM WEAPON GENRATION!
COMPUTER=random.randint(1 ,3)
if COMPUTER == 1:
COMPUTER = "ROCK"
elif COMPUTER == 2:
COMPUTER = "PAPER"
elif COMPUTER == 3:
COMPUTER = "SCISSORS"
print("nGENERATING RESULT. PLEASE WAIT...n")
#Validating response
USER.upper()
game(USER, COMPUTER)
这将生成以下输出:
ROCK PAPER SCISSORS!
Ready?
WHAT WILL YOU CHOSE!
ROCK,
PAPER
or SCISSORS?
INPUT YOUR ANSWER NOW: rock
GENERATING RESULT. PLEASE WAIT...
然后到此结束。
对于长代码,我深表歉意,但我不知道您是否可以在没有此代码的情况下重新创建它
PS:我希望它根据变量打印结果
EG
USER = PAPER
COMPUTER = ROCK
打印结果应为:
YES! I WIN!
Oh, wait. No I didn't. You won
I picked ROCK
upper
方法不会改变原始对象(请记住,字符串在 Python 中是不可变的)。相反,它返回一个包含全部大写字母的副本。所以它应该是:
USER = USER.upper()
希望对您有所帮助!
看起来问题是这一行:
USER.upper()
upper()
方法返回转换为大写的字符串的副本。它不会修改原始文件。您可能想尝试以下方法:
USER = USER.upper()
作为旁注,该程序实际上并没有提前退出。看起来它正在按预期调用game()
函数。只是if
条件的计算结果都没有为 True,因此不会执行任何可见的操作。您可以将其实现为一系列if...elif...elif...
,而不是不同的if
条件。最后,放置一个可以输出错误消息的else
,说明输入未被识别。
有两个明显的事情可能会导致问题:
USER.upper()
应该是
USER = USER.upper()
其次,您正在进行此比较:
if USER == "SICSSORS" and COMPUTER == "ROCK":
其中SICSSORS
一定是错误的拼写,因此您可能会跳过此逻辑分支。