这几天比较瞎忙,没有能够迅速进入学习Python状态,要警惕半途而废,世界上100%的失败都是由于半途而废。
学习Python是我的刚需,我需要一个非常上手的语言来作为以后整理数据,学习计算机,学习区块链,教育小朋友,编写ISP软件,是非常需要!!!
今天做了第5章的练习5-10,要求对用户名进行判定,是否已经被注册。其中难点在于不区分大小写(而Python本身是区分大小写的),
所以就要用到字符串的三个方法:title(),upper(),lower().
开始写程序时犯了个错误,直接对列表进行上述方法操作(潜意识认为可以先把current.users全部小写化,在进行比较),
报错:‘list’ object has no attribute 'lower' 即,列表不存在这个方法属性可以操作。
后来想到只能在变量(即字符串)上进行该方法操作,程序终于可以通过执行,但是执行结果不对,也就是出现了逻辑错误。
检查条件语句,发现又混淆了自然语言与程序语言,然后又纠结于布尔代数的或非门到底是否等于非与(其实应该是相当的)---------布尔代数需要抽时间复习。
再后来编写了不同方法设置条件的相同功能的程序块来实现,具体如下:
#gbk
#5.10
current_users=["xgdtxwd","TINA","Dean","admin","Again"]
new_users=["xiaobeile","mengmeng","DEAN","AGAIN","close","XGDTXWD"]
print(current_users)
print(new_users)
#current_users.lower() #lower,upper以及title都是针对字符串的方法,不可以直接对列表操作
#new_users.lower() #否则会报警:'list' object has no attribute 'lower'
for new_user in new_users: #功能同下
if new_user.lower() not in current_users and new_user.upper() not in current_users and new_user.title() not in current_users:
#上一句原本写成了:if new_user.lower() or new_user.upper() or new_user.title() not in current_users. 这是混淆了自然语言和程序语言,翻译器是看不懂的。
print(new_user.title()+",This name not used,you can choose!")
else:
print(new_user.title()+",This name has been used,please change a new one")
print("\n")
for new_user in new_users: #功能同上
if new_user.lower() in current_users or new_user.upper() in current_users or new_user.title() in current_users:
print(new_user.title()+",This name has been used,please change a new one")
else:
print(new_user.title()+",This name not used,you can choose!")
print("\n")
for new_user in new_users: #功能同上,目前为止,这种写法程序行数最长,但是程序长度最短
if new_user.lower() in current_users:
print(new_user.title()+",This name has been used,please change a new one")
elif new_user.upper() in current_users:
print(new_user.title()+",This name has been used,please change a new one")
elif new_user.title() in current_users:
print(new_user.title()+",This name has been used,please change a new one")
else:
print(new_user.title()+",This name not used,you can choose!")