簡體   English   中英

我的代碼沒有打印我想要它打印的內容

[英]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.

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