Python脚本:字符1等于字符n

时间:2018-12-14 02:55:22

标签: python

我是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.")

3 个答案:

答案 0 :(得分:1)

关于您的代码,有几件事需要评论。首先是您对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是字符串,因此我们可以检查第一个和最后一个字符的索引,并确保它们匹配。

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

答案 1 :(得分:0)

使用以下方法:

def main():
  newChance = True
  while newChance:
      Code = input("Enter a word.")
      if Code.isdigit():
           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
                        break
      str1 = Code
      if str1[0]==str1[-1]:
          print ("Your word is valid.")
      else:
         print ("Your word is invalid.")

因此,基本上,而不是第一个try-except,我们执行一个if语句,因为try-except将永远不会提高,并且startOver被误为startOVer的所有拼写错误已得到解决,并且缩进已得到修复,并添加了break,许多小的更改都可以使其起作用。

答案 2 :(得分:0)

使用lambda函数检查单词是否有效的最简单方法是:

#!/usr/bin/env python

valid = lambda x: True if x[0] == x[len(x) - 1] else False

for i in range(0,998):
    ask = input("Please enter word: ")

    print("# Word is valid!") if valid(ask) is True else print("# Word is invalid!")

从脚本中采样结果:

>>> 
======================= RESTART: D:/Python/checker.py =======================
Please enter word: tester
# Word is invalid!
Please enter word: testing
# Word is invalid!
Please enter word: test
# Word is valid!
Please enter word: