446095563 发表于 2020-4-22 19:19:56

for in 循环 +if条件 问题

描述: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("游戏结束!!!")

qiuyouzhi 发表于 2020-4-22 19:23:43

本帖最后由 qiuyouzhi 于 2020-4-22 19:25 编辑

不需要times+1啊
而且,pass代表什么都不做,
你写完代码了还加个pass也是很秀

446095563 发表于 2020-4-22 19:26:26

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

我才开始学老师是这样教的以后摒弃

qiuyouzhi 发表于 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("游戏结束!!!")
改成这样试试

446095563 发表于 2020-4-22 19:30:12

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

老师 去掉之后还是不能实现第一步输入Y继续开始循环

446095563 发表于 2020-4-22 19:37:27

qiuyouzhi 发表于 2020-4-22 19:29
要是老师是这么教你的,那个老师肯定有问题

改成这样试试

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


老师可以用for in循环 教我实现吗

_荟桐_ 发表于 2020-4-23 07:56:14

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

很难用for循环吧
如果用了for
times基本没多大意义了

_2_ 发表于 2020-4-23 08:53:49

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

秀儿 + 1

446095563 发表于 2020-4-23 10:00:19

_荟桐_ 发表于 2020-4-23 07:56
很难用for循环吧
如果用了for
times基本没多大意义了

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

会计的会怎么念 发表于 2020-4-23 10:14:44

- Python pass 是空语句,是为了保持程序结构的完整性。
- pass 不做任何事情,一般用做占位语句。
- 上面两句摘自菜鸟教程

- 你的for循环循环三次就执行结束,如果想实现在循环结束后输入y再次循环,可以用递归
- 如果想加计数器也就是你的times,建议用while循环更好控制

_荟桐_ 发表于 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("游戏结束!!!")

446095563 发表于 2020-4-23 14:44:58

_荟桐_ 发表于 2020-4-23 12:08
凑乎能用

老师谢谢您!!!

446095563 发表于 2020-4-23 14:54:29

_荟桐_ 发表于 2020-4-23 12:08
凑乎能用

老师
第18行 lower 在这里 表示什么意思呢?
a = false 与 a = True 是什么意思呢?
求解

_荟桐_ 发表于 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,在重新猜年龄

446095563 发表于 2020-4-23 16:05:36

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

谢谢老师!!!

446095563 发表于 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 在代码中没有什么意义 ,我删去后 也是正常运行的

446095563 发表于 2020-4-23 16:35:35

446095563 发表于 2020-4-23 16:21
choose是‘n’时,a是True,就跳出循环
choose是‘y’时,a为False,在重新猜年龄



不好意思 我设置错误了
页: [1]
查看完整版本: for in 循环 +if条件 问题