python - 如果输入字符串不是给定的,如何引发异常
问题描述
根据标题,我正在尝试检查输入字符串是“白色”还是“黑色”,如果不引发异常。
我想出了以下内容:
class Player:
def __init__(self):
self.name = input('Enter you Name: ')
colour = input('Now choose your army colour between "white" and "black": ')
if colour is not 'white' or colour is not 'black':
raise Exception('colour must be either "white" or "black"')
else:
self.colour = colour
def get_name(self):
return self.name
def get_colour(self):
return self.colour
player = Player()
这对我来说看起来不错,但是当我输入“白色”或“黑色”时,它无论如何都会引发异常。
C:\Users\oricc\PycharmProjects\practisingDrowing\venv\Scripts\python.exe C:/Users/oricc/PycharmProjects/practisingDrowing/canvas.py
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Enter you Name: John
Now choose your army colour between "white" and "black": white
Traceback (most recent call last):
File "C:/Users/oricc/PycharmProjects/practisingDrowing/canvas.py", line 67, in <module>
player = Player()
File "C:/Users/oricc/PycharmProjects/practisingDrowing/canvas.py", line 56, in __init__
raise Exception('colour must be either "white" or "black"')
Exception: colour must be either "white" or "black"
Process finished with exit code 1
错误在哪里?
解决方案
你的问题在if colour is not 'white' or colour is not 'black':
is
用于身份测试,而==
用于平等测试。如果is
您想比较两个对象以查看它们是否是同一个对象,请使用;==
如果您想比较它们的值,请使用。
if colour is not white
将返回 true ,除非colour
字面上是对象 string 'white'
。if colour != 'white'
而是比较值,并且是您要在此处使用的值。
(另请注意,您应该使用and
而不是or
- 字符串不能'black'
同时'white'
使用。)
推荐阅读
- javascript - 如何在以下代码中使用双击而不是单击?
- java - 无法使用 monger 插入文档
- javascript - 在 Chrome 扩展中将变量数组 outta options.html 中的变量设置为 background.js
- app-store - 当我在 AppStore 的“等待开发者发布”时提交新版本
- c++ - GetLastError() == 0 导致延迟发生 CreateDialogIndirect() 失败的原因
- julia - 如何检查两个数组是否相等,即使它们在 Julia 中包含 NaN 值?
- javascript - 使用节点 http 发送和接收纯文本而不是对象
- database - 解决多个实体的数据库架构
- c# - 在 C# 中使用丢弃作为返回方法
- excel - 是否可以在已过滤的工作表上使用 VBA 代码?