我是python和程序设计的初学者,我一直在尝试创建一个函数来检查给定键是否在字典中,然后重新运行布尔值。 This topic很有帮助,但没有解决我的函数参数问题。 我发现有许多主题与将字典作为参数传递给函数有关,但没有一个主题说明如何使用键来实现,而在here中找不到我特定问题的答案。
当我在主程序中使用代码时,它可以正常工作:
if "myKey" in myDict:
answ = True
print(myKey, " is there!")
else:
answ = False
print(myKey, " is not there.")
但是,尝试对其执行一个功能然后调用它不起作用,它也不会返回错误,什么也不会发生,也不会被打印出来。
def checkIfThere(myKey, myDict):
#for i in myDict:
if myKey in myDict:
return True
print(myKey, "is there!")
else:
return False
print(myKey, "is not there.")
我曾尝试通过以下方式致电:
checkIfThere("thisIsAKey", myDict)
checkIfThere(thisIsAKey, myDict)
checkIfThere("\"thisIsAKey\"", myDict)
我想念什么? 将字典键作为参数传递给函数只是不可行吗?
答案 0 :(得分:2)
问题在于,当函数遇到return
语句时,它将停止执行,并将控制权返回给调用方。请注意,您也将丢弃返回值(因为未将调用结果分配给变量)。
考虑:
>>> def some_func(x):
... return
... print(x)
...
>>> y = some_func(42)
请注意,print
函数从未运行过。
通常,应该让函数执行工作,并让调用者进行打印。因此,可以编写函数(以更简化的方式):
>>> def check_if_there(key, adict):
... return key in adict
...
>>> is_in = check_if_there('a', {'b':2})
>>> print(is_in)
False
注意,此功能的职责只是检查字典中是否有键。在学习编程时,您会发现将功能拆分为可重用,可组合的部分很有用。因此,另一个功能可能具有打印的责任:
>>> def tell_if_there(key, adict):
... if check_if_there(key, adict):
... print(key, " is there!")
... else:
... print(key, " is not there.")
...
>>> tell_if_there('a', {'b':2})
a is not there.
>>> tell_if_there('b', {'b':2})
b is there!
答案 1 :(得分:0)
您的功能正常!
但是print语句应该在函数之外。试试这个。
1)定义不带打印语句的功能
def checkIfThere(myKey, myDict):
for i in myDict:
if myKey in myDict:
return True
else:
return False
这将返回True或False,具体取决于myKey是myDict的键之一。
2)然后,运行以下内容。
if checkIfThere(myKey, myDict):
print(myKey, " is there!")
else:
print(myKey, " is not there.")
如果上面的函数返回True,则将打印myKey在哪里;否则myKey不存在。
谢谢。
答案 2 :(得分:0)
函数的问题是您要在打印任何内容之前从函数返回。
您可以从函数中删除return语句,以使其正常工作。