关于操作符优先级问题和 布尔类型给变量赋值的问题
现将不明白的问题罗列如下:一、例子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('在程序限定的范围内找不到答案!')
结尾:希望各位大佬耐心解答下,谢谢啦!!
一.是按优先级运算的,先算5 + True,为6,再
3 and 6 or False,短路逻辑,结果为6
二
1.是7的倍数
2.先假定找不到
3.找到了就为True
4.i为1,2,3时,step为14,21,28等7的倍数
本帖最后由 昨非 于 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、至于整个程序,我想我已经讲的够详细了 昨非 发表于 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、为什么不假设步数,而只假设阶梯数? 本帖最后由 昨非 于 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不是脱裤子放屁,多此一举吗{:10_256:}
5:
我们要求阶梯数,才会遍历阶梯数(取7的倍数)找满足条件的,麻烦把你假设步数的思路写清楚点 昨非 发表于 2020-11-21 09:19
问题12:
七的倍数不一定满足条件,但满足条件的一定是7的倍数
问题3:
但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % 7 == 0,但是你怎么确定,如果一直按照7的倍数循环下去就可以符合 前面 三个条件呢,或者本身就是不确定的,但是也只能假设X是7的倍数,因为前面三个条件如果都假设是X的倍数,那么就不会产生余数。所以我的理解就是只能按照7的倍数去找,有就打印出来,没有就一直循环,如果循环到100还没有找的话,那么程序就终止了。不好意思,我也只能理解成这样了。 Fring 发表于 2020-11-21 09:43
但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % ...
可以确定告诉你,答案一定是七的倍数,而且七的倍数只是条件之一,需要在这个条件的基础上继续限定
不想从七开始,你大可从零开始,结果不会有任何变化,只是多运行了一次,多此一举, Fring 发表于 2020-11-21 09:43
但我还是很懵的,为什么一开始假设以7为初始阶梯数,我明白如果满足条件是7的倍数的就是可以确定 steps % ...
这个循环到100是可以改的,改大了也不影响结果,毕竟题目要求是符合条件的最小值,我们知道i取到100是对应x肯定有值才写的循环到100,就算你改成1000000,该循环到哪儿跳出还是不会变 昨非 发表于 2020-11-21 10:12
这个循环到100是可以改的,改大了也不影响结果,毕竟题目要求是符合条件的最小值,我们知道i取到100是 ...
嗯嗯,这样我就清楚了,谢谢 Fring 发表于 2020-11-21 10:20
嗯嗯,这样我就清楚了,谢谢
理解就好,再不理解我就自闭了 昨非 发表于 2020-11-21 10:39
理解就好,再不理解我就自闭了
哈哈,千万不要,以后要解决的问题还多呢!!!!!!!1
页:
[1]