python第九讲课后练习的一个知识点运用求解
第九讲动动手第0题里面有个问题点就是判断密码里是否有*
答案是'*' in passwd,这个应该是python强大语句的体现
但我想用for来实现,可是只能实现检测到*,但没法判断没有*的时候
我的编程如下
pw = 'Fish.com'
counts = 3
while counts > 0:
userpw = input('请您输入密码:')
for i in userpw:
if i == '*':
print('密码里不能有*,您还有',counts,'次机会')
break
if userpw == pw:
print('密码验证成功')
if userpw != pw:
print('密码错误,您还有',counts-1,'次机会')
counts -= 1
break
这段代码如果输入的密码开始不是*后面是*,那依然会吧机会次数-1.这是因为我在循环中只要第一个符号不是*,就执行机会次数-1的命令,而不是把整个输入密码检测完之后再确定是否执行机会次数-1命令。
但我试了很多次,不知道如何实现把整个密码检测完之后再确定输出的语句。
请问一下如何实现? 你要把判断密码是否正确的语句放到循环外面来
或是说用 elif 不要用 if 自己想出来一个解法了
pw = 'Fish.com'
counts = 3
j = 1
while counts > 0:
userpw = input('请您输入密码:')
for i in userpw:
if i == '*':
print('密码里不能有*,您还有',counts,'次机会')
j = 0
break
else:
j += 1
if userpw == pw:
print('密码验证成功')
break
if userpw != pw and j != 0:
print('密码错误,您还有',counts-1,'次机会')
counts -= 1
不过有没有大神有更简单更好的写法呢? 为什么要逐个判断呢。直接用in判断有没有*就行了
pw = 'Fish.com'
counts = 3
while counts > 0:
userpw = input('请您输入密码:')
if '*' in userpw:
print('密码里不能有*,您还有',counts,'次机会')
continue
if userpw == pw:
print('密码验证成功')
break
else:
print('密码错误,您还有',counts-1,'次机会')
counts -= 1 sunrise085 发表于 2020-5-4 07:07
为什么要逐个判断呢。直接用in判断有没有*就行了
多换种思路解法,这样才能更深刻了解程序吧。
页:
[1]