2016-10-29 71 views
-1

這應該工作,但運行測試用例時出現錯誤。由於某種原因,第四次失敗。數字[0]打印出'-1',但在分配給highest_number或lowest_number後只打印' - '。是什麼賦予了?Codewars:解決Kata - 最高和最低

代碼:

def high_and_low(numbers): 
    if numbers: 
     highest_number = numbers[0] 
     lowest_number = numbers[0] 
     numbers = numbers.split(" ") 
     print(highest_number) 
     print(lowest_number) 
     print(numbers[0]) 
     for num in numbers: 
      if int(num) > int(highest_number): 
       highest_number = num 
      if int(num) < int(lowest_number): 
       lowest_number = num 
     return highest_number + " " + lowest_number 

測試用例:

Test.assert_equals(high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"), "542 -214"); 
Test.assert_equals(high_and_low("1 -1"), "1 -1"); 
Test.assert_equals(high_and_low("1 1"), "1 1"); 
Test.assert_equals(high_and_low("-1 -1"), "-1 -1"); 
Test.assert_equals(high_and_low("1 -1 0"), "1 -1"); 
Test.assert_equals(high_and_low("1 1 0"), "1 0"); 
Test.assert_equals(high_and_low("-1 -1 0"), "0 -1"); 
Test.assert_equals(high_and_low("42"), "42 42"); 

錯誤:

ValueError: invalid literal for int() with base 10: '-' 

回答

1

先拆你的號碼,否則你只是在分配第一字符numbers到你的變量:

numbers = numbers.split(" ") 
    highest_number = numbers[0] 
    lowest_number = numbers[0] 
+0

哇,我覺得很傻。謝謝。 – terratunaz

0

這裏試試吧!我剛剛得到它,我覺得很傻,你可以添加符號+符號!

答案是:

def high_and_low(numbers): 
    # must split the numbers, convert them to integers and print the max and min of list 
    numbers = numbers.split() 
    numbers = [int(i) for i in numbers] 
    return str(max(numbers))+" "+str(min(numbers))