鱼C论坛

 找回密码
 立即注册
查看: 1195|回复: 13

[已解决]if...else...的问题

[复制链接]
发表于 2020-6-10 20:16:01 | 显示全部楼层 |阅读模式

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

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

x
  1. import random

  2. def nums(num):
  3.     shuzi = random.randint(1,10)
  4.     count = 2
  5.     while True:
  6.         try:
  7.             a = int(input(num))
  8.             if count:
  9.                 if a > shuzi:
  10.                     print('大')
  11.                     count -= 1
  12.                 elif a < shuzi:
  13.                     print('小')
  14.                     count -= 1
  15.                 elif a == 666: #这里的判断为什么没有跳出循环
  16.                     break
  17.                 else:
  18.                     print('OK')
  19.                     break
  20.             else:
  21.                 print('用尽')
  22.                 break
  23.         except ValueError:
  24.             print('输入错误')

  25. num = ('请输入数字:')
  26. nums(num)
复制代码


想问一下大佬们,为什么“a===666”这个判断里,我输入666没有跳出循环呢?如果我猜对了,会跳出循环,但是我这里设置了a==666,我也输入了666,相等了但是不会跳出,还会继续循环。难道在一个while里只能有一个break吗?求大佬们帮我看看,自己研究2小时了,唉呀妈呀,急死我了~~~
最佳答案
2020-6-10 20:30:25
因为你在输入666的时候,第一个先判断的是 a > shuzi ,if执行一次后面的就不执行了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 20:25:22 | 显示全部楼层
本帖最后由 青出于蓝 于 2020-6-10 21:13 编辑
  1. import random

  2. def nums(num):
  3.     shuzi = random.randint(1,10)
  4.     count = 2
  5.     while True:
  6.         try:
  7.             a = int(input(num))
  8.             if count:
  9.                 if a > shuzi:
  10.                     print('大')
  11.                     count -= 1
  12.                 elif a < shuzi:
  13.                     print('小')
  14.                     count -= 1
  15.                
  16.                 elif a == shuzi:#这里的判断为什么没有跳出循环
  17.                     break
  18.                 else:
  19.                     print('OK')
  20.                     break
  21.             else:
  22.                 print('用尽')
  23.                 break
  24.         except ValueError:
  25.             print('输入错误')

  26. num = '请输入数字:'
  27. nums(num)
复制代码

   
两个等于
一个等于是赋值
两个等于是判断
应该是两个等于


666改成你那个变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:26:14 | 显示全部楼层
青出于蓝 发表于 2020-6-10 20:25
两个等于
一个等于是赋值
两个等于是判断

啊这,代码里面是两个好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:27:29 | 显示全部楼层
老八秘制 发表于 2020-6-10 20:26
啊这,代码里面是两个好吧

我晕
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:29:10 | 显示全部楼层
如果对错判断不是shuzi,那为什么用这个判断输入的大与小呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:29:59 | 显示全部楼层
还有吧a里面input去掉以及对应括号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:30:25 | 显示全部楼层    本楼为最佳答案   
因为你在输入666的时候,第一个先判断的是 a > shuzi ,if执行一次后面的就不执行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:32:36 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 20:30
因为你在输入666的时候,第一个先判断的是 a > shuzi ,if执行一次后面的就不执行了

这个代码成立吗,我在ipad,没发验证
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:33:31 | 显示全部楼层
因为:
他先进行判断 a>shuzi ,如果大于的话,直接就进入if分支里面,而不会进入666的分支里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:36:59 | 显示全部楼层
直接改成
  1. import random

  2. def nums(num):
  3.     shuzi = random.randint(1,10)
  4.     count = 2
  5.     while True:
  6.         try:
  7.             a = int(input(num))
  8.             if count:
  9.                 if a > shuzi:
  10.                     print('大')
  11.                     count -= 1
  12.                 elif a < shuzi:
  13.                     print('小')
  14.                     count -= 1
  15.                 elif a == shuzi:
  16.                     break
  17.                 else:
  18.                     print('OK')
  19.                     break
  20.             else:
  21.                 print('用尽')
  22.                 break
  23.         except ValueError:
  24.             print('输入错误')

  25. num = ('请输入数字:')
  26. nums(num)
复制代码


或者

  1. import random

  2. def nums(num):
  3.     shuzi = random.randint(1,10)
  4.     count = 2
  5.     while True:
  6.         try:
  7.             a = int(input(num))
  8.             if count:
  9.                 if a > 666:
  10.                     print('大')
  11.                     count -= 1
  12.                 elif a < 666:
  13.                     print('小')
  14.                     count -= 1
  15.                 elif a == 666:
  16.                     break
  17.                 else:
  18.                     print('OK')
  19.                     break
  20.             else:
  21.                 print('用尽')
  22.                 break
  23.         except ValueError:
  24.             print('输入错误')

  25. num = ('请输入数字:')
  26. nums(num)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:37:08 | 显示全部楼层
elif a == 666:是在前面判断不成立才执行的,输入666,则if a > shuzi:成立,不会再执行elif a == 666:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:38:02 | 显示全部楼层
本帖最后由 BIO-张磊 于 2020-6-10 20:39 编辑

楼主,你要明白if 条件判断的语句,是独立事件,不能是包含事件,a > shuzi 和 a ==666,这两个条件明显a == 666 是a > 数字的子集,假如你输入了666,两个都满足了,就条件谁先在前就执行谁,他跟switch case不一样,不过python没有switch case语句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 20:46:34 | 显示全部楼层
1#上面代码没问题吧,改了好久,应该是没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 21:03:12 | 显示全部楼层
[b]楼主你是没有理解 elif 和 if 的区别

if 和 elif 配合使用时候,只要有 一个 if 执行 后面的 elif 就不在进行判断,所以你这输入 666

会导致 if 判断完就不继续下面的代码进行判断了 所以你判断不到 a = 666 你要将其 elif 改成 if 而且位置要调换下

一个 while 不止能有 一个break 但是 只要运行到其中一个break 就退出了这个 while

正确代码:

  1. import random

  2. def nums(num):
  3.     shuzi = random.randint(1,10)
  4.     count = 2
  5.     while True:
  6.         try:
  7.             a = int(input(num))
  8.             if count:
  9.                 if a == 666: #这里的判断为什么没有跳出循环
  10.                     break
  11.                 elif a > shuzi:
  12.                     print('大')
  13.                     count -= 1
  14.                 elif a < shuzi:
  15.                     print('小')
  16.                     count -= 1
  17.                 else:
  18.                     print('OK')
  19.                     break
  20.             else:
  21.                 print('用尽')
  22.                 break
  23.         except ValueError:
  24.             print('输入错误')

  25. num = ('请输入数字:')
  26. nums(num)
复制代码

[/b]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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