2017-09-13 80 views
0

這個程序是爲給出的整數和寫def函數。我的def函數代碼結構中有什麼錯誤

def find_sum_numbers(sample_list): 
    sum_numbers=0 
    for x in sample_list: 
     sum_numbers=sum_numbers+x 
    #return sum_numbers 
    print("The sum of the numbers is: ", sum_numbers) 

主程序:

n=input("Please enter a number: ") 
sample_list=range(1,n+1)) 
find_sum_numbers(sample_list) 

輸出:

Traceback (most recent call last): File "D:/edX-courses/Python/programs/def sum of numbers.py", line 14, in <module> 
    sample_list=range(1,n+1) TypeError: must be str, not int 

回答

0

使用輸入時,即使輸入數字,它也會自動接受字符串輸入。你應該做的是檢查輸入是否爲有效數字,然後將其轉換爲整數。

n=input("Please enter a number: ") 
if n.isdigit(): 
    sample_list=range(1,int(n)+1) 
else: 
    print("You must enter a number") 
find_sum_numbers(sample_list) 
0

事實上,所以你需要

之前將其轉換 input函數返回一個字符串,而不是一個整數
sample_list=range(1, int(n) + 1) 
0

..

n=int(input("Please enter a number: ")) 
sample_list=range(1,n+1)) 
find_sum_numbers(sample_list) 

如果使用python2.7默認情況下它考慮所有的輸入值string數據類型。因此,您需要明確轉換string - >int