鱼C论坛

 找回密码
 立即注册
查看: 1468|回复: 10

[已解决]关于操作符优先级问题和 布尔类型给变量赋值的问题

[复制链接]
发表于 2020-11-20 23:53:40 | 显示全部楼层 |阅读模式

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

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

x
现将不明白的问题罗列如下:

一、例子1罗列如下,问题:为什么此处的“加号:+   ”没有优先进行运算,而是按照短路逻辑从左到右?

>>> 3 and 5 + True or False    ##(例子1)


二、例子2罗列如下,问题:
1、为什么阶梯首先要要赋值为7?
2、为甚么 false 要赋值为find?
3、为什么find要赋值为true?
4、steps = 7 *(i +1)代表什么意思?
5、其实整个我都没有看懂为什么可以表示阶梯计算这个问题?


steps = 7   ##(例子2)
i = 1
FIND = False

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
        break
    else:
        steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')




结尾:希望各位大佬耐心解答下,谢谢啦!!

最佳答案
2020-11-21 00:11:49
本帖最后由 昨非 于 2020-11-21 00:34 编辑

第一题:
5+true(1)=6

【and :x and y 返回的结果是决定表达式结果的值。如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x。
       由于是短路操作符,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量】


3 and 6=6

【or : x or y   逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量】
6 or False(0)=6

第二题:
若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。


1、初值为7,是因为7以下没有一个同时满足题目要求,从0开始没有意义
2、FIND作为标识,是判断找没找到的依据,初值为false,意思时没找到,当下面循环中找到了后,
也就是同时满足
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
改为true,意思时找到了
3、你的目的是找同时符合这些条件的x,所以就要遵循x的规律,题目中的x一定是7的倍数,所以对应每个循环变量i,当它不满足条件时,x自动变为7 * (i + 1),也就是依次取值7,14,21,28,,,,,直到找到符合条件的值(改变find)为止。然后,根据find得值用if判断是否打印
if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')
4、至于整个程序,我想我已经讲的够详细了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-21 00:07:38 | 显示全部楼层
一.是按优先级运算的,先算5 + True,为6,再
3 and 6 or False,短路逻辑,结果为6

1.是7的倍数
2.先假定找不到
3.找到了就为True
4.i为1,2,3时,step为14,21,28等7的倍数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 00:11:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2020-11-21 00:34 编辑

第一题:
5+true(1)=6

【and :x and y 返回的结果是决定表达式结果的值。如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x。
       由于是短路操作符,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量】


3 and 6=6

【or : x or y   逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量】
6 or False(0)=6

第二题:
若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。


1、初值为7,是因为7以下没有一个同时满足题目要求,从0开始没有意义
2、FIND作为标识,是判断找没找到的依据,初值为false,意思时没找到,当下面循环中找到了后,
也就是同时满足
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
改为true,意思时找到了
3、你的目的是找同时符合这些条件的x,所以就要遵循x的规律,题目中的x一定是7的倍数,所以对应每个循环变量i,当它不满足条件时,x自动变为7 * (i + 1),也就是依次取值7,14,21,28,,,,,直到找到符合条件的值(改变find)为止。然后,根据find得值用if判断是否打印
if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')
4、至于整个程序,我想我已经讲的够详细了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 09:08:15 | 显示全部楼层
昨非 发表于 2020-11-21 00:11
第一题:
5+true(1)=6

1、那为什么不把 条件steps % 7== 0 也写在 if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5)后面呢?
2、为什么steps % 7== 0 可以省略呢?
3、7也不会同时满足题目要求啊,比如,7 % 2 == 1;  7 % 3 ==1 ,然而剩余阶梯却不是2 ; 7 % 5 ==  2 ,然后剩余阶梯不是4; 7 % 6 == 1,然而剩余阶梯不是5。最后只有 7 % 7 == 0 ,但这只满足了一个条件,而前面那三个条件都没有同时满足。因此怎么能说 7 是同时满足了题目要求的?难道说我对题目的意思没理解对?如果说我没理解对,麻烦能不能详细下讲解下题目的意思,谢谢。。
4、为什么不假设步数,而只假设阶梯数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 09:19:04 From FishC Mobile | 显示全部楼层
本帖最后由 昨非 于 2020-11-21 09:39 编辑
Fring 发表于 2020-11-21 09:08
1、那为什么不把 条件steps % 7== 0 也写在 if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 = ...


问题12:
七的倍数不一定满足条件,但满足条件的一定是7的倍数
问题3:
谁跟你说7满足条件了???
从7开始就是7满足所有条件?还是你看到输出结果是7了?(你自己理解错了)
4:
既然我们的x都是7的倍数,那么再加上取余7等于0不是脱裤子放屁,多此一举吗
5:
我们要求阶梯数,才会遍历阶梯数(取7的倍数)找满足条件的,麻烦把你假设步数的思路写清楚点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 09:43:37 | 显示全部楼层
昨非 发表于 2020-11-21 09:19
问题12:
七的倍数不一定满足条件,但满足条件的一定是7的倍数
问题3:

但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % 7 == 0,但是你怎么确定,如果一直按照7的倍数循环下去就可以符合 前面 三个条件呢,或者本身就是不确定的,但是也只能假设X是7的倍数,因为前面三个条件如果都假设是X的倍数,那么就不会产生余数。所以我的理解就是只能按照7的倍数去找,有就打印出来,没有就一直循环,如果循环到100还没有找的话,那么程序就终止了。不好意思,我也只能理解成这样了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 10:09:42 From FishC Mobile | 显示全部楼层
Fring 发表于 2020-11-21 09:43
但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % ...

可以确定告诉你,答案一定是七的倍数,而且七的倍数只是条件之一,需要在这个条件的基础上继续限定
不想从七开始,你大可从零开始,结果不会有任何变化,只是多运行了一次,多此一举,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 10:12:02 From FishC Mobile | 显示全部楼层
Fring 发表于 2020-11-21 09:43
但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % ...


这个循环到100是可以改的,改大了也不影响结果,毕竟题目要求是符合条件的最小值,我们知道i取到100是对应x肯定有值才写的循环到100,就算你改成1000000,该循环到哪儿跳出还是不会变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 10:20:11 | 显示全部楼层
昨非 发表于 2020-11-21 10:12
这个循环到100是可以改的,改大了也不影响结果,毕竟题目要求是符合条件的最小值,我们知道i取到100是 ...

嗯嗯,这样我就清楚了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 10:39:21 From FishC Mobile | 显示全部楼层
Fring 发表于 2020-11-21 10:20
嗯嗯,这样我就清楚了,谢谢

理解就好,再不理解我就自闭了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 10:55:36 | 显示全部楼层
昨非 发表于 2020-11-21 10:39
理解就好,再不理解我就自闭了

哈哈,千万不要,以后要解决的问题还多呢!!!!!!!1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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