Python 009讲 动动手作业 输入三次密码程序提问!!!
以下是给出的正确答案:count = 3
password = 'FishC.com'
while count: 很疑惑这里为什么不是 while counts>0:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!',end=' '为什么要有个空格end)
continue
else:
print('密码输入错误!您还有', count-1, '次机会!', end=' ')
count -= 1
以下是我的自己写的:
counts=3
password = "FishC.com"
answer=input("请输入密码:")
while counts>0:
if password==answer:
print("密码正确!")
break
elif "*" in password:
print("输入正确形式密码,您还有",counts,"次机会!")
input("请输入密码:") 在这里报错了
continue
else:
print("密码输入错误,你还有",counts-1,"次机会!")
input("请输入密码:")
counts=counts-1 这一排也给我报错了
一个个来,
1、while、if后面跟的判断只要不是为空和为0,都判断为True,反之判断为False,当然,你一定要加上>0也是可以的。
2、也可以不要有个空格,如果end = ‘’(空字符)或end = ' ',那么接下来打印‘请输入密码:’就会不换行出现在同一行上,如果不加end参数,就会打印在下一行。
3、缩进明显不统一,如果你在IDLE界面写代码并且回车不会自动缩进的话,那么一个Tab键是一个缩进,统一缩进在Python里面是最重要的。 本帖最后由 qiuyouzhi 于 2020-3-10 21:02 编辑
1,简写模式,while count就是count不为False(0)
2,输入密码的提示通常都是和输入框在一起的,你想换行也可以https://fishc.com.cn/thread-159045-1-1.html
3,缩进问题
counts=3
password = "FishC.com"
answer=input("请输入密码:")
while counts>0:
if password==answer:
print("密码正确!")
break
elif "*" in password:
print("输入正确形式密码,您还有",counts,"次机会!")
password = input("请输入密码:")
continue
else:
counts-=1
print("密码输入错误,你还有",counts,"次机会!")
password = input("请输入密码:")
continue 本帖最后由 jackz007 于 2020-3-10 21:08 编辑
counts , c = 3 , 0
password = "FishC.com"
while c < counts:
answer = input("请输入密码:") . strip()
if len(answer):
if password == answer:
print("密码正确!")
break
elif '*' in answer:
print("输入正确形式密码,您还有" , counts - c , "次机会!\n")
else:
c += 1
if(c < counts):
print("密码错误,你还有" , counts - c , "次机会!\n")
else:
break
else:
print('很遗憾,' , counts , '次机会已经用完\n') Hoiste 发表于 2020-3-10 20:57
一个个来,
1、while、if后面跟的判断只要不是为空和为0,都判断为True,反之判断为False,当然,你一定要 ...
谢谢了!
qiuyouzhi 发表于 2020-3-10 20:58
1,简写模式,while count就是count不为False(0)
2,输入密码的提示通常都是和输入框在一起的,你想换行 ...
看了你写的然后我自己又去写了遍,按了f5运行后,最后只有零次机会的时候,系统还是让我输入了,就是说我有四次输入机会,是哪里出了问题了呀?麻烦你帮我看看我写的代码可以吗
counts=3
password = "FishC.com"
answer = input("请输入密码:")
while counts > 0:
if password == answer:
print("密码正确,进入程序...")
break
elif "*" in answer:
print("密码中不能含有*号!您还有",counts,"次机会!")
answer=input("请输入密码:")
continue
else:
print("密码输入错误!您还有",counts-1,"次机会!")
answer=input("请输入密码:")
counts=counts-1
机会不是三次是因为你的代码结构不合理,当第一次输错的时候,你马上就让用户再次输入,然后在counts -1,所以在第一次输错的时候,counts从3到2过程中你输入了两次密码,其实只要把结构优化一下就可以了。答案的代码和四楼的代码你可以看下别人是怎么避免这个问题的 13708301611 发表于 2020-3-10 21:48
看了你写的然后我自己又去写了遍,按了f5运行后,最后只有零次机会的时候,系统还是让我输入了,就是说我 ...
counts-1并不代表counts这个值减了1,只是打印出count-1的值
改成这样就好了
counts=3
password = "FishC.com"
answer = input("请输入密码:")
while counts > 0:
if password == answer:
print("密码正确,进入程序...")
break
elif "*" in answer:
print("密码中不能含有*号!您还有",counts,"次机会!")
answer=input("请输入密码:")
continue
else:
counts -= 1
print("密码输入错误!您还有",counts,"次机会!")
answer=input("请输入密码:")
continue
counts -= 1 Hoiste 发表于 2020-3-10 21:53
机会不是三次是因为你的代码结构不合理,当第一次输错的时候,你马上就让用户再次输入,然后在counts -1, ...
四楼的答案有几排都看不懂(我真的是新新新新手那种程度。。)然后看了好久答案也没看出来个什么。我应该就是在最后else 哪里出问题了对吧?你可以帮我看看怎样优化吗{:5_100:}
else:
print("密码输入错误!您还有",counts-1,"次机会!")
answer=input("请输入密码:")
counts=counts-1 13708301611 发表于 2020-3-10 22:22
四楼的答案有几排都看不懂(我真的是新新新新手那种程度。。)然后看了好久答案也没看出来个什么。我应该 ...
看漏了最下面那个报错,else里面的input()没有返回给password,这样你永远无法改变password的值,一旦输入错误,后面无论如何输入都会跑完三遍都是错误。
至于前面说的结构问题,最简单的方法就是根据我说的思路走,让counts在3到2过程中只输入一次,出于习惯建议把counts = counts - 1改成counts -= 1,把counts - 1的这个步骤放在else下面第一行,也就是:
else:
counts -= 1
print('密码输入错误,你还有‘,counts,’次机会!')
password = input('请输入密码:')
那么程序的思路就是第一次输入错误了,机会变为两次,打印还剩两次机会,然后再要求输入密码,进入下一次循环判断。 想问一下大家,我自己写代码的时候看着和答案一模一样,
可是最后出来的机会 会一直倒数,比如说-1次机会,-2次机会....
好像没有停止一样。
请问是哪里出错了? 谢谢!!{:10_266:}
页:
[1]