2017-02-17 11 views
0

私はかなり新しくコーディングしています。現在、「Pythonを学びましょう」という本を使って第1言語(Python)を学んでいますが、これは本書の特別な演習ではありません。運動23と、現在ちょうどインポートされたファイル内のraw_inputから定義された変数をインポートする方法は?

私の最初のファイルがpr1.pyです...これはことも可能であるかどうかを把握しようとしています午前:

def func(): 
    a = float(raw_input("Enter Your Age:")) 
    b = float(raw_input("Enter Your Weight:")) 
    c = float(raw_input("Enter Your Height:")) 

age = "a" 
weight = "b" 
height = "c" 


if __name__ == "__main__": 
    print("This is pr1.py") 

else: 
    print("%s is being imported to another file") % __name__ 

私の第二のファイルがpr2.py

です
import pr1 

def func(): 
    x = raw_input("Enter Your Race:") 
    y = raw_input("Enter Your Gender:") 
    z = raw_input("Enter Your Language:") 

print "Lets find your numbers" 
pr1.func() 

print "Lets find your identity" 
func() 

race = "x" 
gender = "y" 
language = "z" 

if __name__ == "__main__": 
    print("This is pr2.py") 

else: 
    print("%s is being imported into another file") % __name__ 

これは私がpr3.pyを実行し、「印刷」のライン3とライン7にスクリプトをコメントアウトすると、これは私が得るものです

import pr1 

print "%s = a %s = b %s = c" % (age, weight, height) 

import pr2 

print "%s = x, %s = y, %s = z" % (race, gender, language) 

私の第三のファイルpr3.pyです:

python pr3.py 
pr1 is being imported to another file 
Lets find your numbers 
Enter Your Age:25 
Enter Your Weight:224 
Enter Your Height:76 
Lets find your identity 
Enter Your Race:white 
Enter Your Gender:male 
Enter Your Language:english 
pr2 is being imported into another file 

とpr3.pyファイルで、これらのステートメントを以前に定義された変数と一緒に出力することを期待しています。

しかし、代わりにそれは、このエラーを思い付く:今

pr1 is being imported to another file 
Traceback (most recent call last): 
    File "pr3.py", line 3, in <module> 
    print "%s = a %s = b %s = c" % (age, weight, height) 
NameError: name 'age' is not defined 

私は、コマンドに私の最後のファイルを実行すると、私はそれが前の2つのファイルをインポートするために期待していたので、私は、入力データは、私が置くことができますraw_inputに入力し、それを他のファイルで使用します...しかし、両方のファイルをインポートした後、それぞれのraw_inputにデータを入力すると、pr3.pyが生の入力と対応する変数を忘れているようです。

これをすべて修正できる明らかな知識がまったくない場合は、私には許してください。しかし、私は非常に新しくコーディングしていますし、1か月前でも、端末にディレクトリを作成することさえできませんでした。

読んでいただきありがとうございました。私は何か助けていただければ幸いです。

答えて

0

ここではいくつかのことがあります。
まず、コードに間違いがないかどうかを教えてください。
その後、クラスを使用してコードの例を示します。

だから、最初:あなたはpr1.age, pr1.weight, pr1.height、またはあなたfrom pr1 import age, weight, heightとしてそれらを参照する必要がeiterので
age, weight, heightは、pr1.pyで定義されているすべてのです。同じことがrace, gender, languageにあります。pr2.py
あなたが入力したものが印刷されることを期待するかもしれません。しかし、これらの変数には、'a''b''c''x''y'および'z'の文字しか割り当てられませんでした。我々はこれをどのように修正すればよい:あなたは、そうであっても二pr2.py

func()を実行する前に
はまた、あなたはage, weight and heightを印刷します。まず、あなたが輸入をしているときに何が起こっているのかを考える必要があります。また、あなたが参照する変数が本当にどこにでも設定されていると考える必要があります。
この場合、raw_inputの変数を関数に含めるように設定し、その関数内でのみアクセス可能になります。
これは、グローバルを使用するか、オブジェクトを作成することで修正できます。私はオブジェクト(クラス)を使用して推奨されます。
あなたはプログラミングの面で新しいことを言っているので、今は頭がおかしくなっているかもしれませんが、それを得ると、これらの問題を多く解決します。
またすぐにクラスLearn Python The Hard Wayで十分に得ることができます。例として、あなたのコードを取るために

pr1.py:

class Numbers: 

    def func(self): 
     self.age = float(raw_input("Enter Your Age:")) 
     self.weight = float(raw_input("Enter Your Weight:")) 
     self.height = float(raw_input("Enter Your Height:")) 


if __name__ == "__main__": 
    print("This is pr1.py") 

else: 
    print("%s is being imported to another file") % __name__ 

pr2.py:

from pr1 import Numbers 

class Identity: 

    def func(self): 
     self.race = raw_input("Enter Your Race:") 
     self.gender = raw_input("Enter Your Gender:") 
     self.language = raw_input("Enter Your Language:") 


print "Lets find your numbers" 
nrs = Numbers() 
nrs.func() 

print "Lets find your identity" 
ids = Identity() 
ids.func() 


if __name__ == "__main__": 
    print("This is pr2.py") 

else: 
    print("%s is being imported into another file") % __name__ 

pr3.py:

from pr2 import * 

print "%s = a %s = b %s = c" % (nrs.age, nrs.weight, nrs.height) 

print "%s = x, %s = y, %s = z" % (ids.race, ids.gender, ids.language) 
+0

撮影のために感謝本当に助けになった深い説明の時間! – Niles

+0

@Nilesあなたは幸せです。 – EL3PHANTEN

関連する問題