![](/img/trans.png)
[英]Im trying to print the amount of every verible from input, but my code doesn't write what I want it though it seems right. python
[英]My code doesn't print what I want it to print
如果數字是 1 希望它打印1 is a number
但它打印<function num> is a number
。 我該如何解決?
def num():
int(input("number: "))
try:
num()
except ValueError:
print(f"{num} is not a number")
else:
print(f"{num} is a number")
您需要在 function 中輸入 output。您可以嘗試以下操作:
def is_one(num):
#if number is 1 return True otherwise return False
return num == 1
if is_one(num):
print(f"{num} is a number")
做以下:
def num():
try:
input_value = input("number: ")
input_value = int(input_value)
except ValueError:
print(f"{input_value} is not a number")
else:
print(f"{input_value} is a number")
num()
從您的查詢看來,您似乎對 metgod 的任何返回值都沒有興趣,因此將您的異常句柄移到您的 function 中,您應該很好,否則從您的方法返回一個輸入值,然后執行異常處理。 希望這是有道理的。
在 python 中函數也是值,因此名稱num
綁定到您在 def 語句中定義的 function。 這就是為什么當你print(num)
你得到<function num>
。 將 function 調用的返回值分配給num()
將解決您詢問的打印語句的問題:
def num():
int(input("number: "))
a = num()
print(f"{a} is a number")
但是,如您所見,如果您使用與在try:
語句下使用和分配a
相同的try except
結構,您將無法在except
語句下訪問它。 為什么? 因為這是非常糟糕的異常處理設計。 使用“非 integer 可轉換”值調用int
會引發異常,因此在調用int()
的 num 定義下處理它更有意義:
def num():
a = input("number: ")
try:
b = int(a)
print(f"{a} is a number")
return b
except ValueError:
print(f"{a} is not a number")
num()
雖然這符合您的需要,但同樣 function 下的異常處理並不是絕對的,在許多情況下您可能希望在程序中傳遞異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.