[英]Learning about defining functions in my Python class and confused about the output of my code
問題:編寫一個Python函數square,它接受一個數字並返回該數字的平方。
此函數接收一個數字並返回一個數字。
代碼給出:
def square(x):
'''
x: int or float.
'''
我的代碼:
def square(x):
'''
x: int or float.
'''
x = x * x
print x
輸出:
Test: square(-5.0)
Your output:
25.0
None
Correct output:
25.0
Test: square(3.17)
Your output:
10.0489
None
Correct output:
10.0489
Test: square(-3.4)
Your output:
11.56
None
Correct output:
11.559999999999999
為什么我的代碼打印出來(a)“無”,在某些情況下(b)錯誤答案?
如果未從函數返回任何值,則默認情況下將返回None
。
因此,如果您嘗試打印函數的返回值,則將獲得None
。 因此,只是不打印函數調用的結果。
您可以更改函數以返回計算的正方形而不是打印它:
def square(x):
'''
x: int or float.
'''
return x * x
你得到的是None
因為你正在調用你的函數:
print square(3.17)
換句話說,您正在打印函數的返回值。 但是這個功能不會返回任何東西; 換句話說,它返回None
。
因為它已經打印了結果,所以沒有理由以這種方式調用該函數。 簡單地稱之為:
square(3.17)
或者更改功能,使其返回結果而不是打印結果。 (這可能是更好的方法,因為它使函數更普遍有用 - 畢竟有時你可能不想打印結果。)
對於不正確的答案,二進制浮點數學不能完美地表示所有小數。 十進制中看起來有限的數字可能具有無限的二進制表示; 例如, 3.4
就是這樣的一個。 因此,根據定義,所有有限表示都是近似值,並且數學運算通常會給出稍微“關閉”的結果。 Python會在打印您的數字時嘗試隱藏這些差異,但它並不總是這樣做。 解決方案是使用Decimal
類(在decimal
模塊中)來表示您的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.