2017-06-05 133 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語句中的這些「多個值」實際上是一個元組。因此,您可以將返回的元組的每個值分配給兩個標識符,然後將這些值附加到列表中。下面是一段代碼:

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) 
    . 
    . 
    . 

因爲你試圖訪問任何你想要當位置我還不存在的位置我,然後將其值設置你得到一個錯誤。我希望我幫助你。