2017-03-19 9 views
-2

両方のコードが同じ目的です: - 豚ラテン語は、単語の最初の文字を最後に移動し、 "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' 

またはtimeitライブラリからビット助けを借りて、この

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

それぞれを10000回実行し、どれくらいの時間がかかるかを比較します。 –

+0

関数1:0.572109937668関数2:0.469521999359コードのperformaeのこの小さなdiffrence問題です –

答えて

1

、私は2番目の方法は、高速であるという結論に達しました(それはまた、コメントで示唆回のあなたのコードの数千人が実行されます) 。コードは両方とも非常に似たコードであり、第2のコードはより簡潔です。さらに参考にするために、どのコードが速度面で優れているかをテストしたい場合。ここではあなたがそれを行う必要があります方法は次のとおりです。

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という変数に一時的に保存しました。両方の変更が必要です。そうでなければ結果は変化します。

+0

ありがとう、あなたが助けて良いと簡単なコードを書く方法をアドバイスを与えることができます...私はプログラミングに新しい –

+0

isalphaがそれをチェックするので、 'and len(user)> 0'を取り除くことができます。そして、私はそれが可能な限り最短のバージョンだと信じています。 – abccd

+0

.isalphaはalpahpetを受け入れることを忘れています –