鱼C论坛

 找回密码
 立即注册
查看: 2152|回复: 18

[已解决]python零基础课后题009

[复制链接]
发表于 2020-10-21 11:10:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#验证用户密码程序这里

i = 3

answer = 'FISHC.COM'


while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!请输入密码:')
        i -= 1            
   

#我有个小疑问:
1、写好了程序后发现,无论怎么运行,print打印的结果总是又重复了一遍第4行  temp = input(“请输入密码:”),在第7行加continue函数或者是最后一行  i -= 1 ,删掉一个tab缩进都没法改变,哭了
2、最后一行的 i -= 1 ,这个的缩进现在是在else的条件下的,但是我把缩进对准else也是一样的答案,这两个位置的区别是?




#三色球的那里我也有个问题:
我写的代码是这样的:
import random
while True:
    i = ['r1','r2','r3','h1','h2','h3','g1','g2','g3','g4','g5','g6']
    print(random.sample(i,k=8))

#题目说摸出球的颜色匹配,我就想到了用sample函数,但是while就会无限循环,结果肯定是有限个的,还请各大佬不吝赐教(抱拳)
最佳答案
2020-10-21 14:14:06
1、
i = 3
answer = 'FISHC.COM'
while i > 0:        #第1次进入循环,i=3,因此执行循环代码段
    temp = input("请输入密码:")                 
    if '*' in temp:                                       
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:                                    
        print('密码输入错误!您还有', i-1, '次机会!请输入密码:')       #第1次打印'2次'。当i=1的时候,还是进入循环的,因此打印'0次',想正确打印就改算法
        i -= 1                                                                                       #把i自减1(此时表示输入的密码不带*也不正确才减1),改缩进的话,每次循环都减1(按你的代码就是不管是否输入了*都减1)
                                                                                                       #代码段执行结束再判断是否进入循环
==============想正确打印就改算法咯,例如先i -= 1,再print()============

2、sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机唯一的元素

一直循环一直随机,就算你给出判断跳出循环,你也不能确定获得了全部的结果
因此用随机这算法是不能获得所有结果的,只能用枚举。。。作业答案的算法就是
枚举A,枚举B,再枚举C,相加结果为8则打印,否则继续枚举
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-21 11:21:59 | 显示全部楼层
第二问
i = ['r1','r2','r3','h1','h2','h3','g1','g2','g3','g4','g5','g6']
print(random.sample(i,k=8))
就好了吧,不用循环吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 11:28:27 | 显示全部楼层
本帖最后由 昨非 于 2020-10-21 11:30 编辑
i = 3
answer = 'FISHC.COM'
while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
        i-=1     #这里同样浪费了一次机会,要减一的
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!')
        i -= 1 #上面加上那个减一之后,这个只需要写在else里就好了
        #区别,写在else外面,每循环一次必定减一,不存在被else跳过的情况  

或者:
i = 3
answer = 'FISHC.COM'
while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!')
    i -= 1
    #写在else外面,每循环一次(除了输入正确break了)必定减一,就不用加在上面了

评分

参与人数 1荣誉 +4 鱼币 +5 贡献 +2 收起 理由
ricky$ + 4 + 5 + 2 感谢大佬的耐心回复,抱拳了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 11:29:31 | 显示全部楼层
第一问:你的程序没问题的,之所以 你觉得会重复重复 第四行 输入密码的是因为
else:
        print('密码输入错误!您还有', i-1, '次机会!请输入密码:')
        i -= 1

打印里 最后  请输入密码:  跟 输入提示的字一样, 你把打印里的这句话删掉就不会这种错觉了

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +1 收起 理由
ricky$ + 3 + 3 + 1 感谢大佬呀!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 11:32:30 | 显示全部楼层
三色球用随机数的方法不可取,有限的循环次数得不到所有的结果,还会有许多重复的结果。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
ricky$ + 1 + 1 感谢版主!我会继续加油的!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 11:32:45 | 显示全部楼层
i = 3
answer = 'FISHC.COM'
while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!')
        if i-1!=0:           #多打印一次的问题,只需要在这里加一个判断,分开打印就好
            print("请重新输入密码:")
    i -= 1
    #写在else外面,每循环一次(除了输入正确break了)必定减一,就不用加在上面了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-21 13:33:40 | 显示全部楼层

感谢大佬!!!我明白那个i -= 1的位置的区别了!嘻嘻
但是那个重复打印的问题,我按照你教的,分开打印了还是没有改变它重复的问题
还劳烦您在帮我看下,是缩进的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-21 13:35:59 | 显示全部楼层
冬雪雪冬 发表于 2020-10-21 11:32
三色球用随机数的方法不可取,有限的循环次数得不到所有的结果,还会有许多重复的结果。

十分感谢您的回复!!!!我当时也想,可能会有重复的问题,由于刚学第9课,所以没什么好的办法解决它,只是觉得用这个方法来是不是也可以得到答案嘻嘻嘻还是十分感谢您的!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-21 13:37:24 | 显示全部楼层
LuLD 发表于 2020-10-21 11:29
第一问:你的程序没问题的,之所以 你觉得会重复重复 第四行 输入密码的是因为
else:
        print(' ...

我试过了,把重复词语换掉或者是删掉,但是还是没有改变,哎,这到底是我哪里出了错
不过还是感谢您的回复!嘻嘻
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 14:14:06 | 显示全部楼层    本楼为最佳答案   
1、
i = 3
answer = 'FISHC.COM'
while i > 0:        #第1次进入循环,i=3,因此执行循环代码段
    temp = input("请输入密码:")                 
    if '*' in temp:                                       
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:                                    
        print('密码输入错误!您还有', i-1, '次机会!请输入密码:')       #第1次打印'2次'。当i=1的时候,还是进入循环的,因此打印'0次',想正确打印就改算法
        i -= 1                                                                                       #把i自减1(此时表示输入的密码不带*也不正确才减1),改缩进的话,每次循环都减1(按你的代码就是不管是否输入了*都减1)
                                                                                                       #代码段执行结束再判断是否进入循环
==============想正确打印就改算法咯,例如先i -= 1,再print()============

2、sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机唯一的元素

一直循环一直随机,就算你给出判断跳出循环,你也不能确定获得了全部的结果
因此用随机这算法是不能获得所有结果的,只能用枚举。。。作业答案的算法就是
枚举A,枚举B,再枚举C,相加结果为8则打印,否则继续枚举
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 14:22:53 | 显示全部楼层
ricky$ 发表于 2020-10-21 13:33
感谢大佬!!!我明白那个i -= 1的位置的区别了!嘻嘻
但是那个重复打印的问题,我按 ...
i = 3
answer = 'FISHC.COM'
while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i-1, "次机会!")
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!')
    i -= 1
    if i==0:    
        print("验证失败!")

这样就没问题了,满意的话请设为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-21 17:07:06 | 显示全部楼层
ricky$ 发表于 2020-10-21 13:37
我试过了,把重复词语换掉或者是删掉,但是还是没有改变,哎,这到底是我哪里出了错
不过还是 ...

你看,我复制你的代码,第一次是没删除的,第二次是删除了那句话后
Snipaste_2020-10-21_17-05-29.bmp
下面代码
i = 3

answer = 'FISHC.COM'


while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!请重新输入密码:")
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!')
        i -= 1  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 09:08:37 | 显示全部楼层
昨非 发表于 2020-10-21 14:22
这样就没问题了,满意的话请设为最佳答案

谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 09:09:55 | 显示全部楼层
LuLD 发表于 2020-10-21 17:07
你看,我复制你的代码,第一次是没删除的,第二次是删除了那句话后

下面代码

谢谢您!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 10:38:56 | 显示全部楼层

所以,这样修改后还是不行么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-24 09:58:30 | 显示全部楼层
LuLD 发表于 2020-10-22 10:38
所以,这样修改后还是不行么?

按照您的方法修改后,不会重复出现“请输入密码”了,但是我很好奇的是,为什么不能在同一行里进行提示,而非要在下一行提示,才不重复,如果是同一行里可以做怎样的修改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 10:27:54 | 显示全部楼层
ricky$ 发表于 2020-10-24 09:58
按照您的方法修改后,不会重复出现“请输入密码”了,但是我很好奇的是,为什么不能在同一行里进行提示, ...

print() 函数的应用
https://fishc.com.cn/forum.php?m ... amp;highlight=print
在函数的最后添加  end = ‘’
print('密码输入错误!您还有', i-1, '次机会!',end='')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-24 11:20:57 | 显示全部楼层
LuLD 发表于 2020-10-24 10:27
print() 函数的应用
https://fishc.com.cn/forum.php?mod=viewthread&tid=141463&highlight=print
在函 ...
i = 3

answer = 'FISHC.COM'


while i > 0:
    temp = input("请输入密码:")
    if '*' in temp:
        print("密码中不能含有'*'号!您还有", i, "次机会!", end='')
        
    elif temp == answer:
        print("密码正确,进入程序……")
        break
    else:
        print('密码输入错误!您还有', i-1, '次机会!', end='')
        i -= 1
    if i == 0 :
        print("验证失败!")
    


哈哈哈哈哈哈哈哈哈哈哈哈!苍天!我终于写成满意答案了!!!谢大佬!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 11:25:16 | 显示全部楼层
ricky$ 发表于 2020-10-24 11:20
哈哈哈哈哈哈哈哈哈哈哈哈!苍天!我终于写成满意答案了!!!谢大佬!!

  学会了就很棒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表