Python如果在声明中

时间:2017-02-18 15:55:25

标签: python python-3.x

我刚开始使用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'}

1 个答案:

答案 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")