我刚开始使用Python并且正在关注一个在线教程,但是为什么下面的代码不能正常工作有点困惑。我已经在这个网站上查看过使用if ... in
的其他示例,但它们看起来结构相同,所以对我来说if
失败的原因并不合适。
我注意到虽然在教程in
中显示为紫色,但在我的笔记本中它显示为绿色...不确定是否与它有任何关系。虽然它在打印输出上显示为紫色。
提前致谢。
In [53]:dictVar = {}
In [54]:dictVar[25] = "Square of 5"
In [55]:dictVar["Vitthal"] = "Some dude's name"
In [56]:dictVar[3.14] = "Pi"
In [57]:dictVar.keys()
Out[57]:dict_keys([25, 'Vitthal', 3.14])
In [58]:dictVar.values()
Out[58]:dict_values(['Square of 5', "Some dude's name", 'Pi'])
In [59]:len(dictVar.keys())
Out[59]: 3
In [60]:inputKeyToDelete = input("Please enter key to delete ")
Please enter key to delete 25
In [61]:
if inputKeyToDelete in dictVar:
dictVar.pop(inputKeyToDelete)
print("OK, zapped the key-value pair for key = " + inputKeyToDelete)
In [62]:print(dictVar)
{25: 'Square of 5', 'Vitthal': "Some dude's name", 3.14: 'Pi'}
答案 0 :(得分:0)
简短版本:它是因为你输入的字符串"25"
不等于整数25
,这是字典中的一个键。
长版:
input
返回一个字符串,类型为str
。将该字符串转换为
整数,类型int
,执行以下操作:
intkey = int(inputKeyToDelete)
当然,如果inputKeyToDelete
类似于"foo"
,那么就会这样
提出异常:
>>> int('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'foo'
您可以通过捕获例外来防止这种情况:
try:
x = int(s)
except ValueError:
print("That's not a number")