2017-09-09 10 views
0

関数から作成したリストをメインプログラムに取り出せないのはなぜですか?Pythonの関数からリストを取り出す

私は関数の中にそれを印刷したときにそれは成功したが、私は、メインプログラムでそれを行うことを試みたとき、それは

「のバグを探ししようとしているが、のdidnされて「list_numbが定義されていない」と述べました。ヘルプ...

ありがとう、助けてください!

プログラムがなければなりませんので、あなたは基本的にあなたには、いくつかの変数に保存する必要があるので、リストに戻ってきている
def inputlist(listlong): 
    i = 0 
    list_numb = [] 
    while i < listlong: 
     list_numb.append(int(input("data ke-"+str(i)+": "))) 
     i+=1 
    return list_numb 

inputlist(int(input("How many data do you wanna put in? "))) 
print(list_numb) 
+0

は 'リターンsomevar'は、関数を呼び出すコードは、現在定義された' somevar'変数を持っているという意味ではありません。戻り値は関数呼び出し式の値で、 'int'や' input'から返された値を使うように使用します。 – user2357112

+0

'list_numb'は' inputlist(listlong) '関数内でしか定義されていないため、その関数自体のローカル変数です。メインプログラムはそれにアクセスできません。 メインプログラムに持ち込むために、 'list_numb = inputlist(int(input("何個のデータを入れたいですか?))) ''(Daniyal Ahmedの解答)のような関数に変数を代入する必要があります – chowsai

+0

以下の答えを確認してください。 – bhansa

答えて

5

def inputlist(listlong): 
    i = 0 
    list_numb = [] 
    while i < listlong: 
     list_numb.append(int(input("data ke-"+str(i)+": "))) 
     i+=1 
    return list_numb 

list_numb=inputlist(int(input("How many data do you wanna put in? "))) 
print(list_numb) 
0

ます。また、このように、このプログラムを実行することができます。

def inputlist(listlong): 
    i = 0 
    list_numb = [] 
    while i < listlong: 
     list_numb.append(int(input("data ke-"+str(i)+": "))) 
     i+=1 
    return list_numb 

print(inputlist(int(input("How many data do you wanna put in? ")))) 
+0

関数を呼び出すときに出力を直接印刷することができます。 –

0

listはあなたの関数から返しますが、使用しません。関数以外のコードでは定義されていません。

def inputlist(listlong): 
    i = 0 
    while i < listlong: 
     list_numb.append(int(input("data ke-"+str(i)+": "))) 
     i+=1 
    return list_numb 

list_numb = [] 
inputlist(int(input("How many data do you wanna put in? "))) 
print(list_numb) 

するか、同じように、あなたの関数から返されたリストを使用します: どちらかあなたはこのようなあなたのプログラムでグローバルに定義することができ

list_numb = inputlist(int(input("How many data do you wanna put in? "))) 

また、あなたのコードの長さを短くすることができます

list_numb = [input("data ke-"+str(i)) for i in range(int(input("How many data do you wanna put in? ")))] print(list_numb) 
0

あなたは関数内にリスト(変数)を作成しているので、そこにのみ存在します。変数を返すことは、その変数をメインプログラムに入れません。

私はあなたがこれをしたいと思う:

print(inputlist(listlong)) 

それは、この場合には、代わりに


list_numbある関数が戻るが、あなたは外list_numbを定義することができるものは何でも印刷します関数(とメインプログラム)を開き、関数内でその値を編集します。関数内に存在するlist_numbではなく、メインプログラムに現在存在するlist_numbを編集することを関数に指示するには、余分な行が1行必要です。何も返す必要はありません。例えば

list_numb = [] 

def inputlist(listlong): 
    global list_numb 

    i = 0 
    list_numb = [] 
    while i < listlong: 
     list_numb.append(int(input("data ke-"+str(i)+": "))) 
     i+=1 

inputlist(int(input("How many data do you wanna put in? "))) 
print(list_numb) 
関連する問題