a=10
b=15
c=20
d=25
e=30
f=e//c
a-=b
f%=a
print(f>a and c//f or a*e)
这道题真正难点在取模特别是Python里的负数取模基本都是在 f %= a 这里卡住了,根据从上往下的运算顺序来看第一个 f 的值为 1 a -= b的值为 -1。那么问题就来了 1%(-5)。这是什么鬼东西。取模就是取余 ,往简单点就是这么说 ,余数 = 被除数 - (整商 *除数)所以 f = 余数 = 被除数 - (整商 * 除数)= 1 -(整商*) 在Python中在数轴方向上都是往左取就是 -2.3就取 -3 。3.2就取 3。简而论之 就是
求模:商向负无穷方向取最近的整数
求余:商向0靠近取最近的整数
那么1%(-5)的值为整商为1/(-5)=-0.2 就是取-1 那么模为 1 -((-1)*(-5))= -4
那么这道题里的 f 就是 -4 所以print(-4 > -5 and 20 // (-4)or (-5)*30)
举几个栗子
1)8%(-3)
求模:被除数=8,除数=(-3),商=(-2.6)。因为求模中整数商是商向负无穷方向去,取最近的整数,所以整数商=(-3),所以余数=8-((-3)x(-3))= -1
求余:被除数=8,除数=(-3),商=(-2.6)。因为求余中整数商是商向0方向去,取最近的整数,所以整数商=(-2),所以余数=8-((-3)x(-2))= 2
2)(-8)%3
求模:被除数=(-8),除数=3,商=(-2.6)。因为求模中整数商是商向负无穷方向去,取最近的整数,所以整数商=(-3),所以余数=(-8)-(3x(-3))= 1
求余:被除数=(-8),除数=3,商=(-2.6)。因为求余中整数商是商向0方向去,取最近的整数,所以整数商=(-2),所以余数=(-8)-(3x(-2))= -2
正题开始。。。。。。。
程序的执行分三类
1. 顺序执行 最简单直白的例子就是print ,输出一个之后输出下一个
2. 选择执行 if elif else 当一个条件不满足时执行下一个条件满足时的情况
3. 循环执行 if while for 当循环的的条件满足时就执行循环,直到循环执行不下去再继续往下执行
但今天只整理分享流程控制里边的选择执行,最代表的就是 if .....elif.....else
就是当 if 条件: 执行 当if的条件为真时,执行输出。
当 if 条件不成立时,不执行if 语句下的条件 继而运行与elif 最后执行else,并且最后的else可以不存在,无作为,但必须放在最后。
holiday = "平安夜"
if holiday == "平安夜":
print("吃苹果~~~")
elif holiday =="情人节":
print("看电影~~~")
elif holiday == "周末":
print("出游~~~")
else:
print("好好工作,热爱生活")