簡體   English   中英

使用 Python 的未定義參考

[英]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 的一些有趣的事情,我們可以從它的參數類型和返回值快速推斷:

  1. length是您在列表中調用的 function ,您從中得到一個數字(大概是長度)。 這聽起來很像內置的len function —— 你會想要使用其他的東西嗎?

  2. 這個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM