2017-06-05 25 views
-1

私は、Python 3.5では複数の値を返すことができることを知りました。 この機能を使用できるコードを試してみましたが、問題はこれらの複数の値を保存する方法です。親切にはフォローグコードを参照してください。複数の戻り値を格納する方法は?

def input1(): 
    stu=input("Enter Student Name") 
    marks=int(input("Enter Student marks")) 
    return stu,marks 

def assign(): 
    s=[] 
    m=[] 
    i=0 
    while True: 
     #s[i],m[i]=input1() 
     a=int(input("0 to exit")) 
     i+=1 
     if a==0: 
      print(s) 
      print(m) 
      break 

stuストリングとmarksは整数です。 両方の値を配列s[]m[]に同時に保存したいと思います。 私が使用しようとしていた構文はwhileブロックのすぐ下にありますが、明らかに機能しません。

出力:

Enter Student NameR 
Enter Student marks45 

Traceback (most recent call last): 
    File "School_Rank.py", line 19, in <module> 
     assign() 
    File "School_Rank.py", line 12, in assign 
     s[i],m[i]=input1() 
    IndexError: list assignment index out of range 
+0

私はうまくいくように見えます。エラーは何ですか? –

+1

リストのインデックスが@ cricket_007の範囲外です。 Ritesh、あなたの質問を編集して、あなたのために完全なトレースバックPythonプリントを提供してください。 –

+1

また、 'a == 0'は決してTrueではなく、' a'は常に文字列です。 ( 'int()')する必要があります。 –

答えて

2

何がしなければならないことは次のとおりです。

s_var,m_var=input1() 
s.append(s_var) 
m.append(m_var) 

あなたは空のリストに値を割り当てる問題を抱えています。

1

returnステートメントのこれらの「複数の値」は、実際にはタプルです。したがって、返されたタプルの各値を2つの識別子に代入し、これらの値をリストに追加することができます。ここではコードの一部です:

def input1(): 
stu = input('Enter student name: ') 
marks = input('Enter student marks: ') 

return stu, marks 


def assign(): 
    s = [] 
    m = [] 

    stu, marks = input1() 
    s.append(stu) 
    m.append(marks) 
    . 
    . 
    . 

あなたは私、その後は、位置iがまだ存在しない場合にあなたが望むものは何でも、その値を設定した位置にアクセスしようとしているので、あなたがエラーを取得しています。私はあなたを助けたと思う。

関連する問題