哪种代码在速度和处理方面更好?

时间:2017-03-19 22:59:22

标签: python

两个代码的目的相同: - Pig Latin是一种语言游戏,你可以将单词的第一个字母移到最后并添加" ay。"所以" Python"成为" ythonpay。"

 pyg = 'ay'

 original = raw_input('Enter a word:')

 if len(original) > 0 and original.isalpha():
      word= original.lower()
      first= word[0]
      new_word= word +first +  pyg
      new_word= new_word[1:len(new_word)]
      print new_word

 else:
     print 'empty' 

或者

 user = raw_input("what is the word you want to play with:").lower()

 if user.isalpha() and len(user) > 0:
    print user[1:] + user[0:1] + "ay"
 else:
      print "please enter valid name!"    

1 个答案:

答案 0 :(得分:1)

timeit库的帮助下,我得出的结论是第二种方式更快(它在代码中也建议了数千次运行代码)。代码是非常相似的代码,而第二代码更简洁。如需进一步参考,如果您想测试哪个代码在速度方面更好。这是你应该怎么做的:

import timeit

def func1():
    original = 'spam'
    pyg = 'ay'
    if len(original) > 0 and original.isalpha():
        word= original.lower()
        first= word[0]
        new_word= word +first +  pyg
        new_word= new_word[1:len(new_word)]
        s= new_word

    else:
        s= ('empty') 

def func2():
    user = 'spam'.lower()

    if user.isalpha() and len(user) > 0:
        s = user[1:] + user[0:1] + "ay"
    else:
        s = "please enter valid name!" 

a=timeit.timeit(func1)
b=timeit.timeit(func2)
print "function 1: {0}\nfunction 2:{1}".format(a,b)

正如您所看到的,这与您的代码完全相同,我摆脱了raw_input()并将其替换为默认字符串("垃圾邮件"在这种情况下) 。而不是print,我暂时将其保存在名为s的变量中。两种修改都是必要的,否则结果会有所不同。