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