我的蟒蛇石头剪刀布应用程序在没有打印任何东西的情况下结束



我已经制作了一个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一定是错误的拼写,因此您可能会跳过此逻辑分支。

相关内容

最新更新