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