鱼C论坛

 找回密码
 立即注册
查看: 1184|回复: 16

[已解决]for in 循环 +if条件 问题

[复制链接]
发表于 2020-4-22 19:19:56 | 显示全部楼层 |阅读模式

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

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

x
描述:3次循环结束 是否继续时 输入Y 无作用 仍然直接退出小程序
需要实现:3次循环结束后 输入Y 继续3次循环 输入N结束循环         输入其他字符提示需要输入Y/N后,仍然需要输入Y/N(也就是在这块输入Y/N 才能执行)或连续输入其他字符3次(提示错误输入3次游戏结束)
求助:这样要如何才能实现 求老师们指导



for times in range(3):
    age=int(input('请输入您要猜的年龄...'))
    if age==25:
        print('恭喜您猜对了....')
        break
        pass
    elif age >= 26:
        print('猜大了,请在试试')
        pass
    else:
        print("猜小了,请在试试'")
        pass
    times += 1
    if times == 2:
        choose = input('想不想继续猜呢 Y/N:')
        if choose == 'Y' or choose == 'y':
            times == 0
            pass
        elif choose == 'N' or choose == 'n':
            times == 3
            pass
        else:
            print('请输入Y/N')
print("游戏结束!!!")
最佳答案
2020-4-23 12:08:03
446095563 发表于 2020-4-23 10:00
哦   那  老师 while 循环的话 最后一步这个代码怎么实现?  : 输入其他(错误)字符提示需要输入Y/N后 ...

凑乎能用
answer = 25
times = 3
a = False

while times:
    age=int(input('请输入您要猜的年龄...'))
    if age==answer:
        print('恭喜您猜对了....')
        break
    elif age > answer:
        print('猜大了,请再试试')
        times -= 1
    else:
        print("猜小了,请再试试")
        times -= 1
    if times == 0:
        for i in range(3):
            choose = input("是否再来一次?Y/N").lower()
            if choose == 'y':
                times = 3
                a = False
                break
            elif choose == 'n':
                a = True
                break
            else:
                print("输入错误!")
                continue
        else:    # 这个else的意思是如果for循环完整的执行完了(没有break过),执行else语句
            break
    if a:
        break
print("游戏结束!!!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-22 19:23:43 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-4-22 19:25 编辑

不需要times+1啊
而且,pass代表什么都不做,
你写完代码了还加个pass也是很秀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-22 19:26:26 | 显示全部楼层
qiuyouzhi 发表于 2020-4-22 19:23
不需要times+1啊
而且,pass代表什么都不做,
你写完代码了还加个pass也是很秀

我才开始学  老师是这样教的  以后摒弃
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 19:29:31 | 显示全部楼层
446095563 发表于 2020-4-22 19:26
我才开始学  老师是这样教的  以后摒弃

要是老师是这么教你的,那个老师肯定有问题
answer = 25
times = 3

while times:
    age=int(input('请输入您要猜的年龄...'))
    if age==answer:
        print('恭喜您猜对了....')
        break
    elif age > answer:
        print('猜大了,请再试试')
        times -= 1
    else:
        print("猜小了,请再试试")
        times -= 1
    if times == 1:
        choose = input("是否再来一次?Y/N").lower()
        if choose == 'y':
            times = 3
            continue
        elif choose == 'n':
            break
        else:
            print("输入错误!")
            break
print("游戏结束!!!")
改成这样试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 19:30:12 | 显示全部楼层
qiuyouzhi 发表于 2020-4-22 19:23
不需要times+1啊
而且,pass代表什么都不做,
你写完代码了还加个pass也是很秀

老师 去掉之后还是不能实现第一步  输入Y继续开始循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 19:37:27 | 显示全部楼层
qiuyouzhi 发表于 2020-4-22 19:29
要是老师是这么教你的,那个老师肯定有问题

改成这样试试

老师 while 循环的话 最后一步这个代码还没有实现: 输入其他(错误)字符提示需要输入Y/N后,仍然需要输入Y/N(也就是在这块输入Y/N 才能执行)或连续输入其他字符3次(提示错误输入3次游戏结束)


老师可以用for in循环 教我实现吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 07:56:14 | 显示全部楼层
446095563 发表于 2020-4-22 19:37
老师 while 循环的话 最后一步这个代码还没有实现: 输入其他(错误)字符提示需要输入Y/N后,仍然需要输 ...


很难用for循环吧
如果用了for
times基本没多大意义了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 08:53:49 From FishC Mobile | 显示全部楼层
qiuyouzhi 发表于 2020-4-22 19:23
不需要times+1啊
而且,pass代表什么都不做,
你写完代码了还加个pass也是很秀

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

使用道具 举报

 楼主| 发表于 2020-4-23 10:00:19 | 显示全部楼层
_荟桐_ 发表于 2020-4-23 07:56
很难用for循环吧
如果用了for
times基本没多大意义了

哦   那  老师 while 循环的话 最后一步这个代码怎么实现?  : 输入其他(错误)字符提示需要输入Y/N后,仍然需要输入Y/N(也就是在这块输入Y/N 才能执行)或连续输入其他字符3次(提示错误输入3次游戏结束)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 10:14:44 | 显示全部楼层
- Python pass 是空语句,是为了保持程序结构的完整性。
- pass 不做任何事情,一般用做占位语句。
- 上面两句摘自菜鸟教程

- 你的for循环循环三次就执行结束,如果想实现在循环结束后输入y再次循环,可以用递归
- 如果想加计数器也就是你的times,建议用while循环更好控制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 12:08:03 | 显示全部楼层    本楼为最佳答案   
446095563 发表于 2020-4-23 10:00
哦   那  老师 while 循环的话 最后一步这个代码怎么实现?  : 输入其他(错误)字符提示需要输入Y/N后 ...

凑乎能用
answer = 25
times = 3
a = False

while times:
    age=int(input('请输入您要猜的年龄...'))
    if age==answer:
        print('恭喜您猜对了....')
        break
    elif age > answer:
        print('猜大了,请再试试')
        times -= 1
    else:
        print("猜小了,请再试试")
        times -= 1
    if times == 0:
        for i in range(3):
            choose = input("是否再来一次?Y/N").lower()
            if choose == 'y':
                times = 3
                a = False
                break
            elif choose == 'n':
                a = True
                break
            else:
                print("输入错误!")
                continue
        else:    # 这个else的意思是如果for循环完整的执行完了(没有break过),执行else语句
            break
    if a:
        break
print("游戏结束!!!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-23 14:44:58 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-4-23 14:54:29 | 显示全部楼层

老师
第18行 lower 在这里 表示什么意思呢?
a = false 与 a = True 是什么意思呢?
求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 15:49:19 | 显示全部楼层
446095563 发表于 2020-4-23 14:54
老师
第18行 lower 在这里 表示什么意思呢?
a = false 与 a = True 是什么意思呢?


**choose是字符串内置方法,把所有字符串内的字母变小写,这样判断时就只用判断是y还是n了,不用管大小写

choose是‘n’时,a是True,就跳出循环
choose是‘y’时,a为False,在重新猜年龄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-23 16:05:36 | 显示全部楼层
_荟桐_ 发表于 2020-4-23 15:49
**choose是字符串内置方法,把所有字符串内的字母变小写,这样判断时就只用判断是y还是n了,不用管大小 ...

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

使用道具 举报

 楼主| 发表于 2020-4-23 16:21:17 | 显示全部楼层
_荟桐_ 发表于 2020-4-23 15:49
**choose是字符串内置方法,把所有字符串内的字母变小写,这样判断时就只用判断是y还是n了,不用管大小 ...

choose是‘n’时,a是True,就跳出循环
choose是‘y’时,a为False,在重新猜年龄

老师我刚试了下  a=true 和 a=false 在代码中没有什么意义 ,我删去后 也是正常运行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-23 16:35:35 | 显示全部楼层
446095563 发表于 2020-4-23 16:21
choose是‘n’时,a是True,就跳出循环
choose是‘y’时,a为False,在重新猜年龄

不好意思 我设置错误了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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