好吧,所以我正在研究一个Pig拉丁语翻译程序(就像Codecademy课程中的一个,但是更高级),它可以工作,除了当我提示用户是否要翻译另一个单词时,但是不管输入什么,我给用户的if/else语句总是跳转到else。该模块没有给出语法错误或任何东西,我也没有看到任何错误的代码。这是我的程序块给我带来的问题:
def translator():
job = input("Are you translating TO or FROM PygLatin? ")
if job.upper() == "TO":
word = input("Alright, what's the word we're translating? ")
wordlength = len(word)
firstletter = word[0]
choppedword = word[1:wordlength]
completeword = choppedword + firstletter + pyg
print("Okay! Your translated word is...")
time.sleep(3)
print(completeword)
time.sleep(3)
redo = input("Wanna translate something else? Y/N ")
if redo.upper == "Y":
print("Awesome!")
time.sleep(3)
translator()
else:
print("Oh, okay then... Bye " + name + "!")
sys.exit()
elif job.upper() == "FROM":
word = input("Alright, what’s the word we’re translating? ")
wordlengthtwo = int(len(word))
firstletterindex = int(wordlengthtwo - 3)
firstletter = word[firstletterindex]
choppedword = word[0:firstletterindex]
newword = str(firstletter.upper() + choppedword)
print("Okay! Your translated word is...")
time.sleep(3)
print(newword)
time.sleep(3)
again = input("Wanna translate something else? Y/N ")
if again.upper == "Y":
print("Awesome!")
time.sleep(3)
translator()
else:
print("Oh, okay then... Bye " + name + "!")
sys.exit()
更具体地说,编码中的这些部分:
^{pr2}$而且
again = input("Wanna translate something else? Y/N ")
if again.upper == "Y":
print("Awesome!")
time.sleep(3)
translator()
else:
print("Oh, okay then... Bye " + name + "!")
sys.exit()
所以。。。有什么想法可以解释为什么会发生这种情况或者如何解决它?
调用
str.upper
函数时缺少左括号和右括号str.upper
是一个方法。如果希望字符串的值为大写,则应调用此方法。在当您有:
它将
again.upper
与字符串"y"
进行比较。此比较将始终为false,因此它将始终计算false分支。 其他语言不允许以这种方式使用函数,可能会给您带来错误,这种缺少错误的情况可能不是您所期望的。在如果您用REPL或类似的代码查看,您将看到发生了什么,此代码片段有望帮助您了解发生了什么:
^{pr2}$该输出:
您可以在这里看到这一点:http://ideone.com/gYyPnH
相关问题 更多 >
编程相关推荐