好吧,所以我的老师给了我下面的作业,我们只用了大约一天的时间处理字典:
1)创建词典,将句子从一种语言翻译成另一种语言(如西班牙语翻译成英语)。 2) 然后程序应该用第一种语言写一个句子,然后用第二种语言写。
到目前为止,我的代码是:
def userinput():
inputsentence = input("What sentence would you like to translate?(Hint! Make the sentence I speak _ more than my friends")
spanoreng = input("Is this sentence Spanish or English?(Please enter span or eng")
return(inputsentence,spanoreng)
def spantoeng(spantoengtras,inputsentence):
inputsentence.lower()
inputsentence.split()
print(inputsentence)
def engtospan(engtospantrans,inputsentence):
inputsentence.lower()
inputsentence.split()
print(inputsentence)
def main():
spantoengtrans = {'yo' : 'I', 'hablo' : 'speak', 'espanol' : 'spanish', 'ingles' : 'english', 'mas' : 'more', 'de' : 'than','mis' : 'my', 'amigos' : 'friends'}
engtospantrans = {'I' : 'yo', 'speak' : 'hablo', 'spanish' : 'espanol', 'english' : 'ingles', 'more' : 'mas', 'than' : 'de','my' : 'mis', 'friends' : 'amigos'}
(inputsentence,spanoreng) = userinput()
if spanoreng == 'span':
spantoeng(spantoengtrans,inputsentence)
elif spanoreng == 'eng':
engtospan(engtospantrans,inputsentence)
else:
print("please type span or eng")
(inputsentence,spanoreng) = userinput()
main()
我唯一的麻烦就是用字典把单子改了。而且,my.lower()似乎什么也没做。帮忙?
编辑:意识到我的错误。谢谢。
这并不能回答您的主要问题,但lower()调用不起作用的原因是您在调用
inputsentence.lower()
时没有将返回值赋给变量,所以它所做的只是以小写形式返回字符串,但没有任何东西指向它。原始字符串保持不变。当您执行inputsentence.split()
时,同样的事情也会发生,列表被创建并返回,但它不会去任何地方。最终,当您返回与给定值完全相同的值时,lower()和split()什么也不做。如果每次使用字符串方法时都要替换变量
inputsentence
的值,则应该我看不到任何列表——我只看到字符串,它们是不可变的,不使用字典。
所以核心功能可以是:
split
将句子变成一个空格分隔的单词列表;然后列表理解将其变成一个翻译单词列表(如果单词不在词典中,则将其单独留下);最后,我们将后一个列表重新合并成一个空格分隔的句子。当然,这还有很多需要改进的地方,但是没有正则表达式是很难做得更好的——而且如果你使用词典仅仅一天的话,正则表达式可能远远超出了你的研究范围。如果他们没有:
然后
将保留标点和间距。但是,在RE函数和高阶函数之间,我想您最好在稍后的Python研究中忽略这个函数:-)。
首先,您只需要一个
translate
函数。这个函数的目标应该是获取一些句子和字典,并输出另一种语言的句子。要做到这一点,我会这样做:接下来,对于输入函数,需要调用
raw_input()
而不是input()
。这将清除语法错误。如果您在
main()
内对函数调用进行适当的重命名,那么这基本上可以做到。相关问题 更多 >
编程相关推荐