2016-10-29 16 views
-1

私はPythonを学んでいます。これはプログラミング言語を学ぶ私の最初の試みです。私はほとんどのプログラム(非常に非常に単純なpygLatinトランスレータを書くために十分なことを学んだ(私は&自分自身heheで自分自身を挑戦するために何かを考えることはできませんでした))しかし、if文から関数を呼び出す際に問題があります。ここでif文からユーザ定義関数を呼び出す方法

は私が持っているものです。

def input_state(): 

    sentence = input("enter a word to be translated: ") 
    list = sentence.split() 
    for i in list: 
     trans_one_word(i) 
     new_list.append(another_word) 
    s = " " 
    print (s.join(new_list)) 


input_state() 


another = input("Would you like to enter another sentence to be translated? \n Y/N") 

if (another == y) or (another == Y): 
    input_state() 
else: 
    input = ("Press any key to exit") 

は、私は別の文と終了するには、他のキーを入力することができるようにinput_state()関数を呼び出すには、YまたはYたいです。

しかし、どのキーがヒットしても、プログラムを終了するのではなく、プログラムを終了します。

+0

'y'と' Y'は文字列ではなく変数です。それはどのように機能しますか? –

+1

'y'と' Y'は変数です。おそらく '' y ''と '' Y''(文字列リテラル)を使用することを意味しましたか?これを '{' y '、' Y '}の中で別のものにすることは簡単にできます:if another.lower()==' y ': '。 –

+0

'input =("終了するには任意のキーを押してください "):それも間違っています。 –

答えて

0

Pythonで関数を呼び出すと、プログラムはその関数を実行してから、関数が呼び出された場所の進行を再開します。あなたのケースでは、input_state()を呼び出すことは "ループ"しません、それは一度それを呼び出し、そしてプログラムの終わりである次の行に行きます。毎回実行する必要があるかどうかを確認するループwhileを使用する必要があります。また、if (another == y) or (another == Y)の代わりにif another.lower() == 'y'を使用してください。

+0

彼は '(' y '、 'Y'):'それが簡潔で他の関数を呼び出す必要がないので、私が好む別のものを ''できます。技術的には、彼は '' yY ': 'のようなものを書くことさえできたが、それは慣用句ではない。いずれにしても、タプルのメンバシップテストには別の関数を呼び出すオーバーヘッドはなく、IMOは読みやすくなっています。 –

+0

確かに、私はここでパフォーマンスが重すぎるとは思わない。私もその方法に慣れています。 –

+0

確かに、ここでのパフォーマンスは問題ではなく、Pythonicの考え方では、パフォーマンスの向上が明確で読みやすいか、パフォーマンスが懸念やプロジェクトの制約である場合にのみ、パフォーマンスを気にする必要があります。それでも、新しいプログラマにとっては、プログラムが実行されたとき、関数が呼び出されたとき、オブジェクトがインスタンス化されたときなど、メモリ内で何が起こるのかを理解するという点で、コンピュータアーキテクチャの基本的な知識を持つ方が良いと思います。 CSの学位を必要とし、プログラマが無意識にそのようなことを考えさせる。 –

関連する問題