Python:Codecademy PygLatin转换程序错误

时间:2013-10-16 07:22:24

标签: python

Python 2.7

我正在为PygLatin翻译编写代码。 这是我的代码:

print"Welcome to the English to Pig Latin translator!"
original=raw_input("Enter a word to translate. Any word.") #Takes an input
if not original=="" or original==" " and original.isalpha()==True: #Checks that 'original' is not an empty text field and also is not a number.
    print original #If both conditions are true then prints 'original'
else: #If both conditions don't come out true then prints an error.
    print"Either the field is empty or your entry was a number."

如果我输入123作为输入,它仍会打印123,即使它是一个数字。如果输入包含数字,则应该执行else块。我的代码有什么问题?请用简单的词语解释,因为我只是一个Python初学者。

2 个答案:

答案 0 :(得分:1)

您的布尔逻辑不正确; if语句执行为:

(not original=="") or (original==" " and original.isalpha()==True)

因为or的优先级低于and(请参阅documented precedence order)。

由于您的字符串不为空,not original==""True,表达式的第二部分甚至不再评估。

可以通过以下方式简化测试并使其正确:

if original.strip().isalpha():

因为空字符串str.isalpha()永远不是True。在上面的表达式中,str.strip()从字符串的开头和结尾删除所有空格,如果其中只有 空格,则留下一个空字符串。

答案 1 :(得分:0)

您正在打印您的输入声明,您的输入声明是原始的,因此如果您想要打印其他内容,请将if语句中的原始内容替换为您要打印的内容