2017-03-29 22 views
0

私はこの質問の答えを見て、残念ながら、私はそれらを理解できなかったか、彼らは私のために働いていないようだ。もちろんこれは質問に答えた人よりもむしろ私のもとにあるので、事前にお詫びします。ある関数から別の関数に変数を呼び出す(Python)

ほとんど私が他の1つの機能からユーザが割り当てられている変数を呼び出すようにしようとしているので、私は例をあげる:もちろん

def function_one(): 
    a = input("What is your name?") 
    return a 
def function_two(): 
    print("Nice to meet you, "a) 

function_one() 
function_two() 

これは動作し、私はありません私自身の愚かさにはっきりしているのではないかと思っていました。

私はまた、例えば、他の関数から変数を呼び出してみました:

def function_two() 
    a = function_one() 

が、私は同じようにその機能を割り当てていますので、それを動作させるつもりはないので、私はそれはかなり愚かなことに気づきました。

私はいくつかの洞察力に感謝したいと思いますが、これはあなたが期待しているような質問ではありませんが...私は無知です。私はあなたが何をしたいと思います

+2

_ "しかし、私は気付いたので、うまくいきませんでした。" _しかし、実際にそれを実行し、それがうまくいったかどうかを確認しましたか?そうでない場合は、今すぐ試してみることをお勧めします。 – Kevin

+0

2番目のprint文に問題があります。あなたが得ているエラーを特定していないので、それが転写エラーか実際の問題の一部かを判断するのは難しいです。 – glibdud

+0

第2の関数(第2の関数の中の呼び出し関数)が動作し、それほど悪くはありません。なぜ第1のものが動作していないのか:入力を返しますが、その入力を保存しない場合は、それをある変数に代入する必要があります: 'a = function_one()'。 2番目の関数では、aに格納されている値を関数に渡すか、グローバル変数を使うために 'global a'を使う必要があります。関数を渡すには: 'def function_two(a)'は、パラメータとして変数 'a'を取得し、それを' function_two(a) 'と呼ぶことを意味します。 'function_two(function_one())'のようなこともできます。 –

答えて

2

は、その変数を使用してユーザーを迎える、ユーザの入力を取る変数に格納される。

def ask_for_users_name(): 
    name = input("What is your name?") 
    return name 
def greet_user(name): 
    print("Nice to meet you, " + name) 

users_name = ask_for_users_name() 
greet_user(users_name) 

注意すべき重要なことは、私は名前を連結しなければならなかったということです+演算子を使用して文字列 "Nice to meet you"を使用します。

編集:

コメントでの質問に答えるために、あなたはその場合には、このような何かを行うことができます:

def ask_for_user_info(): 
    name = input("What is your name?") 
    age = input("What is your age?") 
    return name, age 

user_name, user_age = ask_for_user_info() 

ベストプラクティスは、多くのために、一つのことを行う関数を作ることです理由は、一つは関数の名前は、通常、インラインコメントの必要置き換えることである:ask_for_user_info()メソッドの場合

def ask_for_user_name(): 
    name = input("What is your name?") 
    return name 
def ask_for_user_age(): 
    age = input("What is your age?") 
    return age 

を、それが直ちにCLありません耳の名前から正確に何をしているのか。

編集2:

あなたは、どちらの順序で、次のようにこれらの二つの機能を使用することができます。

age = ask_for_user_age() 
name = ask_for_user_name() 

または

name = ask_for_user_name() 

または

age = ask_for_user_name() 
+0

ああ、意味があります。しかし、関数 'ask_for_users_name'の中に他にも起こっていることがある場合(私はそれがおそらく悪い習慣だが理論的にはわかっている)、最初の関数などであなたの年齢を聞いたら、変数を代入すると繰り返されませんusers_nameはその関数に? –

+0

よろしいですか?質問に答えるために元の投稿を編集します。コメントに実際にコードを投稿することはできません – Outis

+0

申し訳ありませんが、私は一定の助けに感謝しますが、別の質問があります。あなたは両方を呼びたいと思っていますが、名前と年齢の両方があっても、名前ではなく年齢を呼びたいと思ったらどうですか?それではどうしますか?私がここで見ていることで、私は名前を呼ばなくても年を呼び出すことができないだろうから、その場合ですか? –

0

をあなたがそれを持っている。これはうまくいくはずです。その後、

def function_two(): 
    a = function_one() 
    print('hi {}'.format(a)) 

>>>function_two() 
0

もう一つの方法は、これを使用することです:

def ask_for_users_name(): 
     name = input("What is your name?") 
     greet_user(name) 

def greet_user(user_name): 
    print("Nice to meet you,"+user_name) 

ask_for_users_name() 

あなたは単に終わり)(ask_for_users_nameを呼び出します。

編集:

greet_user_は()、それは何も返さないことを意味void関数、です。この場合、受け取った入力を受け取り、印刷します。他の操作を実行する場合は、追加のパラメーターを渡すか、そのまま使用します。

バージョン1:バージョン1では

def ask_for_users_name(): 
    name = input("What is your name?") 
    age = int(input("What is your age? ")) 
    print("Your age is ", age) 
    greet_user(name) 

def greet_user(user_name): 
    print("Nice to meet you,"+user_name) 

ask_for_users_name() 

、我々はまだ)(ただ一つのことを印刷する)(greet_userを利用し、ask_for_users_nameで別の印刷操作を行っています。

バージョン2:バージョン2では

def ask_for_users_name(): 
    name = input("What is your name?") 
    age = int(input("What is your age? ")) 
    greet_user(name, age) 

def greet_user(user_name, user_age): 
    print("Nice to meet you,"+user_name) 
    print("Your age is", user_age) 

ask_for_users_name() 

、私たちは、渡された変数出た順番に印刷し、)(greet_userに年齢と名前の両方を渡しています。私はこれが役立つことを願っています

+0

ありがとうございました!しかし、ask_for_users_name()関数にも他の部分が含まれていた場合、それはあなたの年齢を尋ねる関数であると言います(私はそれが悪い習慣であることを知っています)。そして、関数から欲しかった唯一のものは名前でした。 –

+0

元の返答で私の編集をご覧ください。 – Ajax1234

関連する問題