簡體   English   中英

運行多行測試用例

[英]Running multiline test cases

我有以下提示:

  • 我們希望您計算給定整數的平方和,不包括任何負數。
  • 輸入的第一行將是一個整數N ( 1 <= N <= 100 ),表示要遵循的測試用例的數量。
  • 每個測試用例將包含一個整數X ( 0 < X <= 100 ) 的行,然后是另一個由X個空格分隔的整數Yn ( -100 <= Yn <= 100 ) 組成的行。
  • 對於每個測試用例,計算整數的平方和,不包括任何負數,並在輸出中打印計算的和。
  • 注意:在收到所有輸入之前,不應有輸出。
  • 注意 2:不要在測試用例解決方案之間放置空行。
  • 注3:從標准輸入獲取輸入,輸出到標准輸出。

Python解決方案的具體規則:

  • 您的源代碼必須是單個文件,至少包含一個 main 函數

  • 不要使用任何for循環、 while循環或任何列表/集合/字典理解

樣本輸入和輸出

我將square_sum函數編寫為:

def square_sum(arr):
    if not arr:
        return 0
    
    value = arr[0]
    if value < 0:
        value = 0
        
    return value**2 + square_sum(arr[1:])
        
square_sum([9, 6, -53, 32, 16])

但是,我無法弄清楚如何在我的函數上運行多行測試用例並以上述格式顯示結果。 有趣的是,可以有任意數量的測試用例,那么如何添加適應它們的能力呢? 我想在這部分得到一些指導,謝謝。

假設這個任務是看如何用遞歸替換所有迭代,並且保留對這樣做的智慧的所有判斷,這里有一個示例解決方案。

您已經實現了內部循環。 我的建議是將解析添加到該循環中,否則您必須使用map或將其替換為另一個遞歸。

def square_sum(lst):
    if not lst:
        return 0
    value = int(lst[0])
    if value < 0:
        value = 0
    return value**2 + square_sum(lst[1:])

外部循環需要讀取兩行:第一(丟棄的)行將包含元素的數量。 第二行將包含您將傳遞給square_sum的字符串。 要控制遞歸的深度,請使用輸入的第一行,它告訴您將有多少樣本:

def run(n):
    count = int(input())
    print(square_sum(input().split()))
    if n > 1:
        run(n - 1)

def main()
    n = int(input())
    run(n)

您的問題要求main功能。 如果您需要在您的模塊中運行它,請繼續執行以下操作:

main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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