首页 > 解决方案 > Python 脚本:字符 1 等于字符 n

问题描述

我是 python 新手,需要一些帮助。我应该编写一个脚本,从键盘读取单词,直到输入单词 999。对于除 999 之外的每个单词,报告该单词是有效还是无效。如果单词的第一个字符等于其最后一个字符,则该单词是有效的。我无法弄清楚我做错了什么。有人可以帮忙吗?

谢谢

enter code here

def main():
  newChance = True
  while newChance == True:
      try:
          Code = raw_input("Enter a word.")
      except ValueError:
           print("You need to use letters only!")
           try:
                 startOver = int(input("To start over, enter 0. To exit enter 999."))
           except:
                 print("Goodbye...")
                 newChance = False
           else:
                 if startOVer == 0:
                        newChance = True
                 else:
                        print("Goodbye...")
                        newChance = False
                        str1 = Code
                        if str1.startswith('"') and str1.endswith('"'):
                                print ("Your word is valid.")
                 else:
                                print ("Your word is invalid.")

标签: python

解决方案


关于您的代码有几点需要评论。首先是您对 TRY/EXCEPT 块的使用。

这些用于错误处理。您已正确使用的:

  try:
      Code = raw_input("Enter a word.")
  except ValueError:

这里的问题是您将主要逻辑定位在错误处理中。这意味着如果用户最初正确输入了一个数字,它永远不会真正达到您的逻辑。

话虽如此,错误捕获在我的系统上不起作用。您可能希望将其作为 IF/ELSE 来处理,并使用Code.isdigit();检查它是否是数字。

在退出逻辑上添加验证也是明智之举。

最后,它应该看起来像这样:

newChance = True
while newChance == True:
    Code = raw_input("Enter a number.")
    if Code.isdigit():
        if Code[0] == Code[-1]:
          print ("Your word is valid.")
        else:
          print ("Your word is invalid.")

        startOverValid = False
        while not(startOverValid):
          startOver = int(input("To start over, enter 0. To exit enter 999."))
          if startOver == 999:
            print("Goodbye...")
            newChance = False
            startOverValid = True
          if startOver == 0:
            startOverValid = True
    else:
        print("You need to use letters only!")

需要注意的关键点是使用if Code[0] == Code[-1]:. 由于我们的 raw_input 是一个字符串,我们可以检查第一个和最后一个字符的索引并确保它们匹配。

我们继续处理重启或退出。由于我们已将自己置于循环中,因此我们只需要测试 2 个有效的循环中断条件。


推荐阅读