【发布时间】:2014-03-25 09:16:03
【问题描述】:
我从 python 开始,并认为尝试构建一个函数来确定传递给它的输入是否为整数,如果是,则它是否为正数是一个很好的练习。在稍后阶段,我计划从只接受正整数的数学函数中引用该函数。
不管怎样,这是我构建的函数:
def is_ok(x): #checks if x is a positive integer
is_int = False
is_pos = False
if type(x) == int:
is_int = True # if it's an integer, continue to test if >0
if x > 0:
is_pos = True
else:
pass
else:
pass
return is_int, is_pos
如您所见,它获取一个参数(要测试的值)并返回一个 True 和 False 元组。
现在,我不知道如何在函数外部使用元组...例如,如果我尝试通过函数传递一个数字并将接收到的值分配给变量,我会收到错误消息。我的意思是:
is_int, is_pos = is_ok(y)
y 是一些数字,例如。这会在运行时产生错误。
所以基本上我想了解的是如何执行以下操作: 函数 A 接受一个值作为其唯一输入 ===> 通过 is_ok(x) 函数运行它 ===> 函数 A 获取 is_ok() 函数生成的元组并使用 if/elifs 根据值生成不同的结果元组。
函数 A 的示例:
def get_value():
z = input("insert value" ")
is_ok(z)
if (is_int,is_pos) == (True, True):
print z**2
elif (is_int,is_pos) == (False, False):
print "Please enter an integer"
get_value()
elif (is_int, is_pos) == (True, False):
print "Please enter an positive integer"
get_value()
else:
print "something is wrong"
我们将不胜感激! 谢谢!
======================= 编辑:后期添加
例如,当我在输入 7 上运行它时(任何正整数):
def is_ok(x): #checks if x is a positive integer
is_int = False
is_pos = False
if type(x) == int:
is_int = True # if it's an integer, continue to test if >0
if x > 0:
is_pos = True
else:
pass
else:
pass
return is_int, is_pos
#is_int, is_pos = is_ok(y)
#print is_ok(y)
#print is_int
#print is_pos
#is_ok(7)
def get_value():
z = input("insert value ")
is_int, is_pos = is_ok(z)
if (is_int,is_pos) == (True, True):
print z**2
elif (is_int,is_pos) == (False, False):
print "Please enter an integer"
get_value()
elif (is_int, is_pos) == (True, False):
print "Please enter an positive integer"
get_value()
else:
print "something is wrong"
get_value()
我明白了:
49 (对,错)
第一问:为什么是假的? 第二个问题:如果为假,为什么它返回它应该有的东西为真,真 第三问:为什么要打印元组?没有打印语句
更多帮助? :)
【问题讨论】:
-
你得到什么错误?您显示的示例调用是正确的。但是,在
get_value()中,您未能将is_ok()的返回值分配给is_int和is_pos。 -
感谢您发现这一点。基本上,当我传递一个正整数时,我得到的元组是(True,False),对于初学者。顺便说一句,现在我还发现了用户尝试传递字符串时会遇到的问题
-
也请注意我的编辑。谢谢!
标签: python function scope return tuples