我很想回答这个问题。
您只需删除两个制表符(或 8 个,如果您使用空格)即可使您的代码正常工作。
减少和的else:
缩进return "Nothing"
结果:
def fetchAndReplace(dictionary, key, newValue):
keys = dictionary.keys()
for i in keys:
if i == key:
print dictionary[key]
dictionary[key] = newValue
return
else:
return "Nothing"
dictionary = {"x":1, "y":2}
print "The result is: " + str(fetchAndReplace(dictionary,"x",3))
print "The result is: " + str(fetchAndReplace(dictionary,"z",0))
这将产生:
1
结果是:无
结果是:没有
为什么?因为通过减少缩进,else
将附加到for
,并且根据此文档,只有在循环正常退出时(即,没有or ),才会执行else
部分 in ,这就是为什么它将遍历所有条目,并且仅当未找到密钥,它将返回字符串“Nothing”。否则它将返回,因为您只有语句。for..else
for
break
return
None
return
但正如其他人所注意到的,你可能想要这样的东西:
def fetchAndReplace(dictionary, key, newValue):
result = dictionary.get(key, "Nothing")
dictionary[key] = newValue
return result
哪个逻辑是保存dictionary[key]
in variable的原始值result
,如果 key 不可用,就会赋值给 value Nothing
。然后用 替换该键的值,dictionary[key] = newValue
然后返回result
。
运行此代码:
dictionary = {"x":1, "y":2}
print "The result is: " + fetchAndReplace(dictionary,"x",3)
print "The result is: " + fetchAndReplace(dictionary,"z",0)
会产生
结果是:1
结果是:没有