python - 为什么 __init__ 函数内部的 if,else 条件无法正常工作?蟒蛇 3
问题描述
我是python纯编程的新手,我创建了简单的“人类”类,并希望在字典中创建一些具有初始类函数“--inti--”的所有属性的对象,问题是,我可以没有为“gender”参数指定那种类型的预期格式,并且 --init-- 中的 if-else 条件无法正常工作,我的意思是它总是在我添加时将性别参数填写为“Female”,例如,一男一女有两种性别,但它只是为每个对象添加了性别=“女性”
class Human:
def __init__(self, name, gender, age):
self.name = name
if ('Famele' or 'female' or 'f' or 'F' in gender):
gender = "Female"
self.gender= gender
elif ('Male' or 'male' or 'm' or 'M' in gender):
gender = "Male"
self.gender = gender
self.age = age
lis_obj_name = []
def obj_creator():
obj_number = int(input("how many object would you like to create? "))
for i in range(obj_number):
my_object = input('what is object name? ')
lis_obj_name.append(my_object)
obj_creator()
my_objects = {objects: Human(input('your name '),input('male,or female(Plz write it) '),input('your
age ')) for objects in lis_obj_name}
或者例如使用这种 if-else 格式,它仍然不起作用!:
class Human:
def __init__(self, name, gender, age):
self.name = name
if gender == 'Famele' or 'female' or 'f' or 'F':
gender = "Female"
self.gender= gender
elif gender == 'Male' or 'male' or 'm' or 'M':
gender = "Male"
self.gender = gender
self.age = age
解决方案
您的代码的问题是语句if "Famele" or "female" or "f" or "F" in sexual
。该语句将始终评估为True
因此elif
块永远不会执行。
您可以将Human
类的实现更改为此,它使用in
运算符来检查性别。
class Human:
def __init__(self, name, sexual, age):
self.name = name
if sexual in ["Famele", "female", "f", "F"]:
sexual = "Female"
self.sexual = sexual
elif sexual in ["Male", "male", "m", "M"]:
sexual = "Male"
self.sexual = sexual
self.age = age
推荐阅读
- algorithm - Big Theta Notation 公式令人困惑需要清晰
- node.js - 我在 chrome 中丢失了 Node.js 调试按钮
- wpf - 可以覆盖 DependencyProperties 吗?
- android - 带有 `wrap_content` 的 ConstraintLayout 高度
- dataset - BIRT 脚本数据源:未定义的变量
- oracle - 从存储过程返回布尔值作为输出参数?
- json - 如何使用 Angular 4 和节点 js 将 json 数据保存为 excel 文件?
- xml - 如何使用 foreach 函数打印 XML 数据
- android - Android 后台位置限制
- java - Thymeleaf - 列表中每个对象的表单