内容正文:
任务2.4 运算符
水仙花数的判断
2.4 运算符——水仙花数的判断
“宇宙之大,粒子之微,火箭之速,化工之巧,地球之变,生物之谜,日月之繁,无处不用到数学。”
——华罗庚
如果一个三位数,其各个数位上数字的立方和等于其本身,则称之为“水仙花数”。
2.4 运算符——水仙花数的判断
【任务描述】
在学习了数据类型之后,我们需要进一步了解数据间的运算,和小T一起,以解决数学问题为目标来学习Python的运算法则。在数字中存在这样的数:如果一个三位数,其各个数位上数字的立方和等于其本身,则称之为“水仙花数”。例如153=1^3+5^3+3^3,153就是一个水仙花数。让我们和小T一起设计一个程序,实现输入的一个三位数,判断其是否为水仙花数。
2.4 运算符——水仙花数的判断
素养小课堂:
一个 n 位自然数等于自身各个数位上数字的 n 次幂之和,则称此数为自幂数。
一位自幂数叫作独身数;
两位自幂数是不存在的;
三位自幂数叫作水仙花数;
四位自幂数叫作四叶玫瑰数;
五位自幂数叫作五角星数;
……十进制中最大的自幂数有 39 位,共有 88 个自幂数。
自我肯定表现
2.4 运算符——水仙花数的判断
【任务分析】
可以按照以下步骤完成本次任务:
(1)用input()函数输入数据。
(2)利用算术运算符求出百位数、十位数、个位数。
(3)根据规则作出判断。
在Python中,对数据的变换称为运算,表示运算的符号被称为运算符,参与运算的数据被称为操作数。例如,“1+2”是一个加法运算,“+”被称为运算符,1和2被称为操作数。按功能区分,运算符可分为算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符和成员运算符等。
2.4 运算符——水仙花数的判断
2.4 运算符——水仙花数的判断
算术运算符
比较运算符
逻辑运算符
赋值运算符
位运算符
成员运算符
运算符的优先级
运算符任务实现——水仙花数的判断
2.4 运算符——水仙花数的判断
#水仙花数的判断
# 输入一个三位数
num=eval(input("请输入一个三位数:"))
# 分别计算百位、十位和个位数
hundreds=num//100
tens=num//10%10
ones=num%10
# 格式化输出
print(hundreds**3+tens**3+ones**3 == num)
//,% 算术运算符
== 比较运算符
2.4 运算符——水仙花数的判断
2.4.1 算术运算符
2.4.2 比较运算符
2.4.3 逻辑运算符
2.4.4 赋值运算符
2.4.5 位运算符
2.4.6 成员运算符
2.4.7 运算符的优先级
2.4.8 任务实现——水仙花数的判断
2.4.1 算术运算符
运算符 说明 实例 结果
+ 加 12.45 + 15 27.45
- 减 4.56 - 0.26 4.3
* 乘 5 * 3.6 18.0
/ 除法(和数学中的规则一样) 7 / 2 3.5
// 整除(只保留商的整数部分) 7 // 2 3
% 取余,即返回除法的余数 7 % 2 1
** 幂运算/次方运算,即返回 x 的 y 次方 2 ** 4 16,即 24
2.4.1 算术运算符
2.4.1 算术运算符
#某同学期末成绩总分、平均分运算
english =88 # 整数
math = 90.5 # 浮点数
python = 95 # 整数
# 加法运算
sum = english + math + python # 浮点数
print("1--总成绩为:", sum)
# 除法运算
average = round(sum / 3,2)
print("2--平均成绩为:", average)
# 取整运算
field = english // 10
print("3--英语成绩在{}-{}段位间".format(field*10,(field+1)*10))
注意:
(1)对在整数类型与浮点型数据进行混合运算时,将整数类型转换为浮点型。
(2)对在其他类型与复数类型进行混合运算时,将其他类型转换为复数类型。
1--总成绩为: 273.5
2--平均成绩为: 91.17
3--英语成绩在80-90段位间
【例2-24】算术运算符。
即学即答:
在Python运算符中,取余的运算符是( )。
A.% B.**
C.// D./
2.4.1 算术运算符
2.4.2 比较运算符
运算符 相关说明
> 大于,如果>前面的值大于后面的值,则返回True,否则返回False
< 小于,如果<前面的值小于后面的值,则返回True,否则返回False
== 等于,如果==两边的值相等,则返回True,否则返回False
>= 大于或等于,如果>=前面的值大于或等于后面的值,则返回True,否则返回False
<= 小于或等于,如果<=前面的值小于或等于后面的值,则返回True,否则返回False
!= 不等于(等价于数学中的 ≠),如果!=两边的值不相等,则返回True,否则返回False
is 也称为身份运算符,判断两个变量所引用的对象是否相同,如果相同则返回True,否则返回False
is not 也称为身份运算符,判断两个变量所引用的对象是否不相同,如果不同则返回True,否则返回False
2.4.2 比较运算符
比较运算符也称为关系运算符,用于对常量、变量或表达式的值进行关系判定,判定的结果是一个逻辑值True(真)或者False(假)。
2.4.2 比较运算符
print("80是否大于100:", 80 > 100)
print("24*5是否大于或等于66:", 24*5 >= 66)
print("86.5是否等于86.5:", 86.5 == 86.5)
print("34是否等于34.0:", 34 == 34.0)
print("False是否小于True:", False < True)
print("True是否等于True:", True == True)
80是否大于100: False
24*5是否大于或等于66: True
86.5是否等于86.5: True
34是否等于34.0: True
False是否小于True: True
True是否等于True: True
【例2-25】比较运算符。
即学即答:
表达式“50%10>0”返回的结果是( )。
A.0 B.True
C.False D.以上都不是
2.4.2 比较运算符
2.4.3 逻辑运算符
逻辑运算符 含义 基本格式 说明
and 逻辑与运算 x and y 当x和y的布尔值均为True时,返回y;否则返回x
or 逻辑或运算 x or y 当x和y的布尔值均为True时,返回x,否则返回y
not 逻辑非运算 not x 如果x为True,则not x返回False;否则返回True
2.4.3 逻辑运算符
逻辑运算符可以将多个语句按照逻辑进行连接,从而判定更复杂的逻辑问题。
2.4.3 逻辑运算符
【例2-26】逻辑运算符的使用。
a=22
b=33
print("a and b",a and b)
print("a or b:",a or b)
print("not a:",not a)
a and b 33
a or b: 22
not a: False
即学即答:
表达式1024%2==0 or 99的结果是( )。
A.True B.False
C.99 D.0
2.4.3 逻辑运算符
2.4.4 赋值运算符
运算符 相关说明 用法举例 等价形式
= 最基本的赋值运算 x = y x = y
+= 加赋值 x += y x = x + y
-= 减赋值 x -= y x = x - y
*= 乘赋值 x *= y x = x * y
/= 除赋值 x /= y x = x / y
%= 取余赋值 x %= y x = x % y
**= 幂赋值 x **= y x = x ** y
//= 取整赋值 x //= y x = x // y
2.4.4 赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量。
a = 35;b = 15;c = 5
c = a + b # 一般赋值
print("1.c 的值为:", c)
c += a # 加赋值
print("2. c 的值为:", c)
c *= a # 乘赋值
print("3.c 的值为:", c)
c /= a # 除赋值
print("4.c 的值为:", c)
c = 2
c %= a # 取余赋值
print("5.c 的值为:", c)
c **= a # 幂赋值
print("6. c 的值为:", c)
c //= a # 取整赋值
print("7. c 的值为:", c)
1. c 的值为: 50
2. c 的值为: 85
3. c 的值为: 2975
4. c 的值为: 85.0
5. c 的值为: 2
6. c 的值为: 34359738368
7. c 的值为: 981706810
2.4.4 赋值运算符
【例2-27】赋值运算符的使用。
即学即答:
表达式x/=y等价于( )。
A.x=y B.x=x/y
C.x=y/x D.y=x/y
2.4.4 赋值运算符
2.4.5 位运算符
运算符 相关说明 用法举例 等价形式
& 按位与运算符 x& y 参与运算的两个值,如果相应的二进制位都为1,则该位的结果为1,否则为0
| 按位或运算符 x| y 参与运算的两个值,只要对应的二进制位中有一个为1,结果位就为1
^ 按位异或运算符 x^y 参与运算的两个值,当对应的二进制位相异时,结果为1
~ 按位取反运算符 ~x 对x的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<< 左移动运算符 x<< n 把运算数x的各二进制位全部左移n位,由n指定移动的位数,高位丢弃,低位补0
<< 右移动运算符 x<< n 把运算数x的各二进制位全部右移n位,由n指定移动的位数
2.4.5 位运算符
位运算符把数字转换为二进制后进行运算,其操作数必须为整数。
2.4.5 位运算符
a=60
b=13
print(a&b)
print(a|b)
print(a^b)
print(~a)
print(a<<2)
print(a>>2)
12
61
49
-61
240
15
a = 0011 1100
b = 0000 1101
--------------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
a<<2= 1111 0000
a>>2= 0000 1111
【例2-28】位运算符的使用。
2.4.6 成员运算符
运算符 说明 用法
in 在指定的序列中找到值则返回True,否则返回False x in y,如果x在y序列中,则返回True,否则返回False
not in 没有在指定的序列中找到值则返回True,否则返回False x not in y,如果x不在y序列中,则返回True,否则返回False
2.4.6 成员运算符
成员运算符用于判断某值在给定的序列中是否存在,这种序列包括列表、字符串、集合等组合数据类型。
2.4.6 成员运算符
'''判断e是否在str中存在'''
e='e'
str='Hello, China!'
print(e in str)
print(e not in str)
True
False
【例2-29】成员运算符的使用。
2.4.7 运算符的优先级
运算符 相关说明
** 幂运算(最高优先级)
*、 /、%、// 乘、除、取余、取整
+、- 加、减
>>、<< 按位右移、按位左移
& 按位与
^、| 按位异或、按位或
==、!=、>=、>、<=、< 比较运算符
is、not is 身份运算符
in、not in 成员运算符
not、and、or 逻辑运算符
2.4.7 运算符的优先级
Python为运算符设置了优先级,在执行运算时,按优先级从高到低执行。
2.4.7 运算符的优先级
'''运算符的优先级'''
a=20
b=10
c=3
r1=(a+b)-c # 先执行括号里的运算,再执行减法运算r2=a/b*c # 先执行除法运算,再执行乘法运算r3=a**c/b # 先执行幂运算,再执行除法运算print(r1,r2,r3,sep='
')
27
6.0
800.0
【例2-30】运算符的优先级。
即学即答:
用Python运算符表达数学表达式 ,正确的是( )。
A.3**2+5*7**3/2 B.(3**2+5*7**3)/2
C.3**2+(5*7**3)/2 D.(3**2)+5*7**3/2
2.4.7 运算符的优先级
2.4.8 任务实现——水仙花数的判断
2.4.8 任务实现——水仙花数的判断
【任务描述】
通过学习运算符,我们了解了各类运算符的运算规则和优先级。现在让我们和小T一起来编写判定一个三位数是否为水仙花数的程序。对于输入的三位数num,关键在于用已学过的运算符取其百位、十位和个位数,并用比较运算符比较各位数的立方和是否与原数相等。我们按以下步骤来设计程序:
2.4.8 任务实现——水仙花数的判断
【任务分析】
(1)用input()函数输入数据num。
(2)利用取整(//)、取余(%)等运算符取出百位数、十位数、个位数。
(3)求出各位数的立方和,并与原数进行比较。
(4)根据比较结果做出是否是水仙花数的判断。
水仙花数
abc = a3 +b3 +c3
怎样用Python程序实现
2.4.8 任务实现——水仙花数的判断
2.4.8 任务实现——水仙花数的判断
(1)输入一个三位数(input())
(2)通过运算分别得到个位,十位,百位上的数(运算符)
(3)比较后输出结果(true or false)
2.4.8 任务实现——水仙花数的判断
num=eval(input("请输入一个三位数:"))# 输入一个三位数,将输入结果赋值给变量 num
# 分别计算百位、十位和个位数
hundreds=num//100
tens=num//10%10
ones=num%10
print(hundreds**3+tens**3+ones**3 == num)# 格式化输出
请输入一个三位数:111
False
【例2-31】任务实现:水仙花数的判断。
$$