求问大家Python009讲动动手问题,为什么我这样写不对
secreat = 'FishC.com'count=3
while count:
tempt = input("请输入密码")
while"*" in tempt:
tempt = input('密码中不能含有"*"!您还有',count,'次机会')
count -= 1
if tempt == secreat:
print("密码正确,进入程序.....")
break
else :
print('密码输入错误!您还有',count,'次机会!')
#在输入正确和除*以外的密码反馈都正确,但是输入*时,就会出错,把*当做乘号处理了。
Traceback (most recent call last):
File "E:/python/009ex01.py", line 6, in <module>
tempt = input("密码中不能含有"*"!您还有',count,'次机会")
TypeError: can't multiply sequence by non-int of type 'str' tempt = input('密码中不能含有"*"!您还有',count,'次机会')
改成
tempt = input('密码中不能含有"*"!您还有%d次机会'%count) 西殴 发表于 2017-9-18 20:05
改成
果然对了,感谢!小甲鱼的参考答案中
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
是这么写的,能告诉我为什么我那样写会出错吗
因为你输入中有*的时候没有跳出while循环,所以他会再次执行 tempt = input('密码中不能含有"*"!您还有',count,'次机会'),并没有执行你后面的count-=1,所以一直是三次不变。 password = 'FishC.com'
i = 3
while i:
passwd = input("请输入密码:")
if passwd == password:
print("密码正确,进入程序......")
break
elif "*" in passwd:
print("密码中不能包含有“*”号!,您还有",i,"次机会!",end="")
continue
else:
print('密码输入错误,您还有',i-1,'次机会!',end="")
i -= 1
换一个调用方式,也可以。先把:"密码中不能包含有“*”号!,您还有",i,"次机会!" 打印出来,再要求输入密码,就不会冲突了。
另外,要满足输入“*”号不减少次数就得加入continue了。密码正确跳出while还需要break。
页:
[1]