Python编写的RPSLS游戏运行始终输出Fail响应是什么原因?
代码问题汇总
- 第一个致命问题:你对
rpsls = input("Ready to begin? [Y/N] ").lower()做了小写转换,但判断条件写的是if rpsls == "Y",小写的"y"永远不可能等于大写的"Y",所有输入都会直接触发最外层else打印Fail。 - 第二个问题:后续的
rules输入没有做大小写统一处理,即使用户输入小写"y"也无法匹配判断条件里的大写"Y",依旧会走到外层else输出Fail。 - 第三个问题:
comp_action是存储所有选项的列表,你直接拿用户输入的单个字符串和完整列表做相等判断,永远不会成立,就算走到内层逻辑也无法打印"TIE",正确操作是从列表中随机取一个元素作为电脑的选择。 - 第四个问题:逻辑分支结构有问题,只要内层的规则判断、猜拳判断不满足,都会落到最外层的else分支打印Fail,不符合正常的交互逻辑。
修正后的参考代码
import random as rand import time count = 0 name = input("What is your name? ") print("Welcome,", name, ",to the games!") # 输入统一转小写,判断也用小写匹配 rpsls = input("Ready to begin? [Y/N] ").lower() if rpsls == "y": # 规则输入也做小写转换,避免大小写匹配失败 rules = input("Are you familiar with the rules? [Y/N] ").lower() if rules == "y": print("Starting...") time.sleep(3) comp_action_list = ["rock", "paper", "scissors", "lizard", "spock"] # 从选项列表随机抽取一个作为电脑的出拳结果 comp_choice = rand.choice(comp_action_list) user_input = input('Take a guess: ').lower() if user_input == comp_choice: print("TIE") # 可在此处补充其他胜负判断逻辑 else: # 补充规则说明分支,避免直接进入外层else输出Fail print("Rules: Rock crushes Scissors, Scissors cuts Paper, Paper covers Rock, Rock crushes Lizard, Lizard poisons Spock, Spock smashes Scissors, Scissors decapitates Lizard, Lizard eats Paper, Paper disproves Spock, Spock vaporizes Rock.") else: print("Fail")
内容的提问来源于stack exchange,提问作者Shadowheart411
相关产品推荐
相关产品推荐

