繁体   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