2012-02-28 12 views
1

に変数としてそれを使用しようとすると、私のpythonに初心者とそのことについては、すべての任意のコーディングだ、と私は私が書いたいくつかのコードといくつかの問題を抱えています:ユーザの入力を評価してのpython

loop = 0 
hellosentence = "You have selected the hello sentence" 
questionsentence = "You have selected the question sentence" 

usrinput = raw_input("Which test would you like to bring up? ") 

print eval(usrinput)+sentence 

end = raw_input("Press any key to quit...") 

私はこれを念頭に置いてコードを実行しようとしています。

最後に複数の名前があります。ユーザーは、ユーザーが文で入力した後

を起動したい「文」

要求が、それは彼らが入力したものを評価し、 「こんにちは」と言うと作るために「文」とそれを組み合わせました変数 "hellosentence"を返し、変数の文字列を呼び出します。

私は14歳で、この言語を理解する方法を実際に学習しようとしています。だから誰もがこのエラーを修正するために何ができるか知っていれば、とても感謝しています。

+1

あなたが – Daenyth

+1

を達成するために、正確に何をしようとしている[あなたの変数名のうち、データを保管してください。](HTTP ://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html)代わりに辞書を使用してください。 –

+0

私は変数sentence = "sentence"を作成し、文字列usrinputが望ましい出力を持っていることを評価しました。 – crazedsuirlz

答えて

3

evalあなたがそれを与えて評価する文字列を取るつもりです。この場合、入力された入力文字列を取ります。定義した変数で判断して、入力を受け取り、sentenceを追加したいので、 'hello'と入力すると、の値が返されます。

それを修正するための直接的な方法はevalに適切な入力与えることです:

print eval(usrinput+'sentence') 

おそらくあなたの問題を解決しますが、それはそれを行うには良い方法ではありません。 evalは仕事の間違ったツールです。エラーリカバリが問題になります。これがプロダクションコードの場合は、プログラムをウイルスに変えたいと思っている人に大きな穴を開けます。

適切なツールは辞書で、入力を使用して適切な出力を検索することができます。

selection = {'hello': hellosentence, 'question': questionsentence} 
print selection[usrinput] 
+0

これは完璧です。私は今完全に理解している。私は辞書の使い方を決して理解できなかったと思う。私は戻ってもう一度チュートリアルをします。どうもありがとうございます。 – crazedsuirlz

1

まず第一に、あなたの

loop = 0 

ラインは無意味です。あなたは再び使用されることはないことがわかります。

print eval(usrinput)+sentence 

私はあなたが達成しようとしていることを知ることができます。しかし、それはそのようには機能しません。これは、どのような変数の値を表示しませんあなたのために何の多くを行いません()はevalを使用して、その

print usrinput+sentence 

書き込みを想像することはusrinputと同じ始まりと文の終了を持っています。それはusrinputの値を出力し、文の値を出力します。文変数がないので、文の値が存在しないため、エラーが発生しています。

入力を求めるプロンプトが表示されたら、ユーザーは「hello」と入力したとします。印刷行はhellosentenceの値を表示しませんが、 "hello"を出力し、文が存在しないためにエラーが発生します。これは、単語「りんご」ではなく「プレッツェル」を出力します

pretzel = "apple" 
print pretzel 

:あなたはこのような何かを持つことができるので、基本的に、あなたはこのように、純粋な英語を扱うことができません。これを理解できない場合は、変数と割り当てについて読むことを強くお勧めします。

usrinputの値をチェックする必要があります。

if usrinput = "hello": 
    print hellosentence 

あなたのプログラムの最終行の最後の変数は、値をendに割り当てるだけで何もしません。 usrinputで行ったようにendの値をチェックしてみてください。

プログラムが実際にどのように実行されているか誤解しているようです。私は変数と割り当てについて読むことをお勧めします。

0

これは仕事を得る必要がある - のevalの安全でない部分を除いては何も;))

input = raw_input # remove this if you already use Python 3... 

def my_func(): 
    for i in range(10): 
     pass 
    return "How are you today?" 

sentences = {} 
sentences["hello"] = "Hello world..." 
sentences["question"] = my_func 

usrinput = input("Which test...?") 

try: 
    obj = sentences[usrinput] 
    if hasattr(obj, '__call__'): 
     print(obj()) 
    else: 
     print(obj) 
except KeyError: 
    print("Invalid input...") 
finally: 
    input("Press ENTER to quit...") 
関連する問題