[英]Undefined Reference using Python
def get_list():
print('enter the list of integers on a single line, separated by comma, enter to end: \n')
num1 = [int(i) for i in input().split(',')]
return num1
def calculate(n1, n2, length):
n3=list()
for i in range(0, length(n1)):
n3.append(n1[i]+n2[i])
num1 = get_list()
print(num1)
num2 = get_list()
print(num2)
num3 = calculate(num1, num2, length)
print("the new list is: ", num3)
我得到一個未定義的參考錯誤無法弄清楚如何讓這個代碼工作
在下一行中,從未定義可變length
。
num3 = calculate(num1, num2, length)
事實上,你一開始就不需要那個變量
def calculate(n1, n2):
return [i+j for i,j in zip(n1, n2)]
num3 = calculate(num1, num2)
這個 function 的length
應該是多少?
def calculate(n1, n2, length):
n3=list()
for i in range(0, length(n1)):
n3.append(n1[i]+n2[i])
這就是類型注釋有用的地方; 甚至編寫它們的過程也可以幫助你思考你的代碼是如何工作的(或者它是如何不工作的)。 根據您使用這些變量的方式,我認為類型將是:
from typing import Callable, List
def calculate(
n1: List[int],
n2: List[int],
length: Callable[[List[int]], int]
) -> None:
n3: List[int] = list()
for i in range(0, length(n1)):
n3.append(n1[i]+n2[i])
關於這個 function 的一些有趣的事情,我們可以從它的參數類型和返回值快速推斷:
length
是您在列表中調用的 function ,您從中得到一個數字(大概是長度)。 這聽起來很像內置的len
function —— 你會想要使用其他的東西嗎?
這個 function 沒有返回任何東西,這意味着:
print("the new list is: ", num3)
總是要打印類似the new list is: None
。 這就是你的意思嗎?
此 function 的版本不需要length
參數並實際返回計算出的列表:
from typing import List
def calculate(
n1: List[int],
n2: List[int],
) -> List[int]:
n3: List[int] = []
for i in range(len(n1)):
n3.append(n1[i]+n2[i])
return n3
或者,將這個完全相同for
循環編寫為推導式,而不是創建一個空列表並附加到它:
from typing import List
def calculate(
n1: List[int],
n2: List[int],
) -> List[int]:
return [n1[i]+n2[i] for i in range(len(n1))]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.