示例:
old_key = ''
key = '----'
for i in key:
print(i)
if all (i) == "-":
print('nochange')
else:
old_key = old_key.replace(old_key,key)
print(old_key)
输出:
----
我的方法有什么错误?由于密钥包含所有(' - '),为什么old_key已更改? 我没有正确使用所有功能吗?
有什么想法吗?
答案 0 :(得分:0)
all
在可迭代上运行。不是一个单一的元素。如果您执行以下代码段:
for i in key:
all(i) == '-'
您会多次看到False
打印,这就是执行else
块的原因。
摆脱循环并为if
块执行此操作:
if len(set(key)) == 1 and key[0] == '-':
print "Not changed"
上述代码的作用是,它转换列表key
中的一个集合。由于python中的一个集合不能有重复的元素set(key)
变得只是-
。我们现在必须确保set(key)中只有一个元素,并且该元素是-
。 if len(set(key)) == 1 and key[0] == '-':
负责检查。
即,:
old_key = ''
key = '----'
if len(set(key)) == 1 and key[0] == '-':
print "Not changed"
else:
old_key = old_key.replace(old_key,key)
答案 1 :(得分:0)
我没有正确使用所有功能吗?
不,如果iterable中的所有参数都返回True
,all()
函数将返回True
。在您的情况下,传递给all时字符串的每个字符都将返回True(因为字符串被视为可迭代):
>>> all("-")
True
但是,您将执行
>>> True == "-"
False
您可以看到评估为False,导致您输入else
子句,将old_key
替换为key
答案 2 :(得分:0)
我自己不确定python,但看起来这就是原因:
for i in key:
print(i)
key
作为一个数组,我可以想象一个值,然后打印出来。其余的代码什么也没做,因为你正在替换'''使用key
- 但没有''