鱼C论坛

 找回密码
 立即注册
查看: 2059|回复: 12

[已解决]python中while如何使用多条件判断呀,求大神解答

[复制链接]
发表于 2021-2-19 22:49:33 | 显示全部楼层 |阅读模式

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

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

x
temp = input("你的成绩是多少呢?来输入他吧: ")
number = int(temp)

while number >100 and number < 0:
    temp = input("输入的内容有误重新输入吧: ")
    number = int(temp)

if number >90:
    print("您的成绩很优秀\n")
elif (number >80 and number <90):
    print("您的成绩良好\n")
elif (number <80 and number >60):
    print("你的成绩合格\n")
else:
    print("fuck!\n")


例如这个简单的例子,运行后程序输入大于100或者小于0的数字,程序会直接忽略while直接运行if语句,之前学的是C现在真的有点懵逼不知道是什么原因求大神解答
最佳答案
2021-2-19 22:53:04
本帖最后由 昨非 于 2021-2-19 22:59 编辑

while number >100 and number < 0:
大于100 且 小于0,楼主咋想的啊???
这一条件根本不成立,while后面就相当于跟了false,不被跳过才怪呢?

应该是:(或)
while number >100 or number < 0:

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

使用道具 举报

发表于 2021-2-19 22:53:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2021-2-19 22:59 编辑

while number >100 and number < 0:
大于100 且 小于0,楼主咋想的啊???
这一条件根本不成立,while后面就相当于跟了false,不被跳过才怪呢?

应该是:(或)
while number >100 or number < 0:

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

使用道具 举报

发表于 2021-2-19 22:55:20 | 显示全部楼层
temp = input("你的成绩是多少呢?来输入他吧: ")
number = int(temp)

while number >100 or number < 0:           #只修改这里
    temp = input("输入的内容有误重新输入吧: ")
    number = int(temp)

if number >90:
    print("您的成绩很优秀\n")
elif (number >80 and number <90):
    print("您的成绩良好\n")
elif (number <80 and number >60):
    print("你的成绩合格\n")
else:
    print("fuck!\n")
测试:
你的成绩是多少呢?来输入他吧: 111
输入的内容有误重新输入吧: -10
输入的内容有误重新输入吧: 95
您的成绩很优秀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 09:38:42 | 显示全部楼层
本帖最后由 Peteryo01223 于 2021-2-20 09:43 编辑

答:按你的问题所述,如果:运行后程序输入大于100或者小于0的数字程序不会直接忽略while,也不会直接运行if语句,因为,你的输入正好符合了while 后面的条件,python 会直接运行这三行的,
while number >100 and number < 0:
     temp = input("输入的内容有误重新输入吧: ")
     number = int(temp)
即:python 会打印出一行字,“输入的内容有误重新输入吧:”,然后按code所述,把你重新输入的值赋值给 number,再重新判断一遍。

再次输入的值,如果又符合了 while 后面的条件,就二次循环刚才的步骤。
再次输入的值如果不符合 while 后的条件,则进入后面的 code, 四选一地打印出一个对输入值评价。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 09:49:59 | 显示全部楼层
2楼说的对,楼主把or用成and了,改过来应该就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 10:01:18 | 显示全部楼层
1.
temp = input("你的成绩是多少呢?来输入他吧: ")
number = int(temp)
这一行代码可以这样改进:
number = int(input("你的成绩是多少呢?来输入他吧: "))

2.第二段代码的想法是:如果成绩小于0 或者是大于100.那么输入当然是错误的,所以这个条件应该是or 不是and,毕竟不是同时成立的,所以第二段这样改:
while number >100 or number < 0:
   number = int(input("输入的内容有误重新输入吧: "))

3.第三段代码的问题还是一样的,在于你的对逻辑运算的不熟悉,当你想要的两个条件都同时成立(比如你必须是高,富,帅才有白富美追你)才可以用and,如果是降低条件,那就其中之一也行吧(比如白富丑,只能要高或者富或者帅的人)所以这时候用or。综上,,同时成立——and,(降低条件)只有一个就行——or。最后,有个方便的地方是不等式的用法可以这样用,所以代码这样改进
if number >90:
    print("您的成绩很优秀\n")
elif 80 <= number <90:
    print("您的成绩良好\n")
elif 60<= number <80:
    print("你的成绩合格\n")
else:
    print("fuck!\n")


4完整的代码:
number = int(input("你的成绩是多少呢?来输入他吧: "))
print('number is ',number)

while number >100 or number < 0:
   number = int(input("输入的内容有误重新输入吧: "))

if number >90:
    print("您的成绩很优秀\n")
elif 80 <= number <90:
    print("您的成绩良好\n")
elif 60<= number <80:
    print("你的成绩合格\n")
else:
    print("fuck!\n")

5.建议,逻辑没搞清楚,回去再看看吧(给个最佳呗)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 10:06:59 | 显示全部楼层
昨非 发表于 2021-2-19 22:53
while number >100 and number < 0:
大于100 且 小于0,楼主咋想的啊???
这一条件根本不成立,while后 ...

大哥,你住在论坛吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 10:20:04 | 显示全部楼层
4分钟就回复,大佬是不是编程做了自动提醒。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 10:48:05 From FishC Mobile | 显示全部楼层
Python初学者8号 发表于 2021-2-20 10:06
大哥,你住在论坛吗

最佳答案向来先到先得啊
不至于不至于,恰巧看到了呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 12:47:08 | 显示全部楼层
昨非 发表于 2021-2-20 10:48
最佳答案向来先到先得啊
不至于不至于,恰巧看到了呗

每次都是打字太多,结果错失了前排,最佳被别人抢了

昨天一进来,刷新,就看见你回答了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 12:53:21 From FishC Mobile | 显示全部楼层
Daniel_Zhang 发表于 2021-2-20 12:47
每次都是打字太多,结果错失了前排,最佳被别人抢了

昨天一进来,刷新,就看见你回答了{:10 ...

大家都差不多
你看twilight大佬,比我快还比我正确、详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 16:40:37 | 显示全部楼层
昨非 发表于 2021-2-20 10:48
最佳答案向来先到先得啊
不至于不至于,恰巧看到了呗

起早贪黑写个答案容易吗我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-22 10:52:24 | 显示全部楼层
你把第一行的 and 改成or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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