使用布尔值设置是否打印卷和电子邮件的标志。 defsearch _ student (database=none,ID=None,roll=False,email=False ) :
if ID is None or ID==0:
打印' providetheargumentsproperly '
返回假
for each in数据库:
if each.id==ID:
打印' student name : { } '.format (each.name ) )。
if roll:
打印' stuten troll : { } '.format (each.roll _ no ) ) ) ) ) ) ) ) )。
if电子邮件:
打印(student email : (}.format ) each.email ) ) ) )。
布莱克
else:
返回' userdoesnotexistindatabase '
database=[studentdatabase(1,' Mayukh Sarkar ',9,' 555-2312 ',' mayukh2012@hotmail,com ' )
^{pr2}$
也可以将id作为密钥存储在dict中。 defsearch _ student (database=none,ID=None,roll=False,email=False ) :
if ID is None or ID==0:
打印' providetheargumentsproperly '
返回假
get=database.get(id )
if get is not None:
打印' student name : { } '.format (get.name ) )。
if roll:
打印' student roll : { } '.format (get.roll _ no ) ) ) ) ) ) ) ) ) )。
if电子邮件:
打印(student email : (}.format ) get.email ) ) ) )。
else:
返回' userdoesnotexistindatabase '
database={ 1: student database (1,' Mayukh Sarkar ',9,' 555-2312 ',' mayukh2012@hotmail,com ',
2:studentdatabase(2,' zjdch Sengupta ',7,' 555-1345 ',' zddlm@gmail.com ' ) }
Student Roll: 9
sudent email : mayu KH 2012 @ hotmail,com
in [ 19 ] : search _ student (database,1,roll=True ) ) ) ) ) ) )。
Student Name:快乐发夹/p Student Roll: 9
in [ 20 ] : search _ student (database,1,email=True ) ) ) ) ) ) ) ) ) )。
Student Name:快乐发夹/pstudentemail : mayu KH 2012 @ hotmail,com
in [ 21 ] :搜索_ student (database,1 ) )。
Student Name:快乐发夹/pin [ 22 ] : search _ student (database,5 ) ) ) ) ) ) ) ) ) ) ) ) ) )。
out [ 22 ] : ' userdoesnotexistindatabase '
所有的逻辑都希望使用dict,但是getattr使用**kwargs:import collections
defsearch _ student (database=none,ID=None,**kwargs ) :
if ID is None or ID==0:
打印' providetheargumentsproperly '
返回假
get=database.get(id )
if get is not None:
打印' student name : { } '.format (get.name ) )。
for k in kwargs:
print(student ) ) :(}.format ) k,getattr(get,k ) )
else:
返回' userdoesnotexistindatabase '
database={ 1: student database (1,' Mayukh Sarkar ',9,' 555-2312 ',' mayukh2012@hotmail,com ',
2:studentdatabase(2,' zjdch Sengupta ',7,' 555-1345 ',' zddlm@gmail.com ' ) }
search_student(database,1,roll_no=True,email=True ) ) )。
如果用户输入了无效的关键字/属性,则必须捕获。 有很多方法可以解决,但一个简单的方法是属性捕获错误。 try:
print(student ) ) :(}.format ) k,getattr(get,k ) )
except AttributeError:
打印(informativemessageorwhateverissuitable ) )
或者,使用hasattr并在返回False时执行某些操作。 if get is not None:
打印' student name : { } '.format (get.name ) )。
for k in kwargs:
ifnothasattr(get,k ) :
continue
print(student ) ) :(}.format ) k,getattr(get,k ) )
传递默认值: if get is not None:
打印' student name : { } '.format (get.name ) )。
for k in kwargs:
val=getattr(get,k,False ) )。
if val:
打印(student (: ) ) (.format,val ) ) ) ) ) )。
else: