本文主要是介绍Python随堂笔记 常量 运算符 内置函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🌴 2022.3.18 下午
文章目录
- 前言
- 2.4 常量和变量
- 2.4.1 常量
- 2.4.2 变量
- 2.5 运算符和表达式
- 2.5.1 常用运算符
- 2.5.2 运算符优先级
- 2.5.3 补充说明
- 2.6 特殊内置函数
- 2.6.1 内置函数简介
- 2.6.2 特殊内置函数
- 2.7 典型案例
前言
🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
💻提示:本文的环境配置是Python3的开发环境。目录顺序以当堂内容(教材)为准,所以并非“1、2、3”
📽本节主要内容:学习python中常量变量的定义,基本的运算符,内置函数,之后通过2.7典型案例练习
2.4 常量和变量
2.4.1 常量
常量一般指不需要改变也不能改变的常数或常量,如一个数字3、一个字符串"火星"、一个元组(1, 3, 5)等
Python中没有专门定义常量的方式,通常使用大写变量名表示。但是,这仅仅是一种提示和约定俗成,其本质还是变量
PI = 3.14 #定义一个常量.
r = float(input("请输入圆的半径: "))
area = PI * r * r #计算圆面积.
print("area =",area)
'''
请输入圆的半径: 3.4
area = 36.2984
'''
2.4.2 变量
🚀 变量概述
- 与常量相反,变量的值是可以变化的
- 在Python中,不仅变量的值可以变,其类型也可以变
- 在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可。当给一个变量赋值时即创建对应类型的变量
- 当用变量的时候,必须给这个变量赋值。如果只声明一个变量而没有赋值,则Python认为这个变量没有定义
m = 120
print("m的数据类型:",type(m)) # m的数据类型: <class 'int'>
m = "大数据"
print("m的数据类型:",type(m)) # m的数据类型: <class 'str'>
只声明一个变量而没有赋值
x = 50
print("x =",x)
print("x + y =",x + y)
'''
x = 50
print("x + y = ",x + y)
NameError: name 'y' is not defined
'''
🚀 变量命名
- Python中变量的命名遵循标识符的规定,可以使用大小写英文字母、汉字、下画线、数字
- 变量名必须以英文字母、汉字或下画线开头,不能使用空格或标点符号(如括号、引号、逗号等)
#合法变量
a,A,b1,c_4,_s1_,身高
#不合法变量
1a,d 3
🚀 变量赋值
在使用Python中的变量前都必须给变量赋值,变量赋值后才能在内存中被创建。Python使用
赋值运算符(=)给变量赋值,其一般格式为:
变量1,变量2,变量3,… = 表达式1,表达式2,表达式3,…
如果多个变量的值相同,也可以使用如下格式:
变量1 = 变量2 = … = 变量n = 表达式
counter = 68
print("counter:",counter) # counter: 68
miles = 26.91
print("miles:",miles) # miles: 26.91
name = "John"
print("name:",name) # name: John
四大名著 = ["三国演义","红楼梦","西游记","水浒传"]
print("四大名著:",四大名著) # 四大名著: ['三国演义', '红楼梦', '西游记', '水浒传']
data1,data2,data3 = 10,95.12,"人工智能"
print("data1 = %d,data2 = %f,data3 = %s."%(data1,data2,data3)) # data1 = 10,data2 = 95.120000,data3 = 人工智能.
古代军事家 = ["孙武","白起","李靖","王翦"]
zsj1,zsj2,zsj3,zsj4 = 古代军事家
print("zsj1 = %s,zsj2= %s,zsj3 = %s,zsj4 = %s."%(zsj1,zsj2,zsj3,zsj4))
# zsj1 = 孙武,zsj2 = 白起,zsj3 = 李靖,zsj4 = 王翦.
x = y = z = 268
print("x = %s,y = %s,z = %s."%(x,y,z)) # x = 268, y = 268, z = 268
🚀 例题
交换两个变量的值
a = 50; b = 60
print("交换前: a = %d,b = %d "%(a,b)) # 交换前: a = 50,b = 60
a,b = b,a #交换两个变量的值.
print("交换后: a = %d,b = %d "%(a,b)) # 交换后: a = 60,b = 50
给不同变量赋相同的数值,利用
id
获取内存位置,每一次运行指向都不同
a = 16.8
b = 16.8
print("a的id为:",id(a)) # a的id为: 1443854448
print("b的id为:",id(b)) # b的id为: 1443854448
给不同变量赋相同的列表,每一次运行指向都不同
x = ["王羲之","顾恺之","阎立本","颜真卿"]
y = ["王羲之","顾恺之","阎立本","颜真卿"]
print("id(x) =",id(x)) #id(x) = 38512136
print("id(y) =",id(y)) #id(y) = 37701704
变量复制
a = 100
b = a
print("a的id为:",id(a)) #a的id为: 1443854448
print("b的id为:",id(b)) #b的id为: 1443854448
2.5 运算符和表达式
2.5.1 常用运算符
🚀 算术运算符和算术运算表达式
算术运算符用于对算术运算对象进行算术运算,由算术运算符与算术运算对象组成的式子称为算术运算表达式
a=10,b=21
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 31 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -11 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
/ | 除 - x 除以 y | b / a 输出结果 2.1 |
% | 取模 - 返回除法的余数 | b % a 输出结果 1 |
** | 幂 - 返回x的y次幂 | a**b 为10的21次方 |
// | 取整除 - 向下取接近商的整数 | 9//2 4 |
#求自然数268的逆序数并输出
x = 268
a = x // 100 #计算百位数字.
b = x // 10 % 10 #计算十位数字.
c = x % 10 #计算个位数字.
y = c * 100 + b * 10 + a #计算逆序自然数.
print("原自然数: x =",x) # 原自然数: x = 268
print("逆序自然数: y =",y) # 逆序自然数: y = 862
🚀 关系运算符和关系运算表达式
- 关系运算符用来比较两个对象之间的关系,对象可以是数或字符串等常量、变量或表达式
- 由关系运算符与比较对象组成的表达式称为关系运算表达式
- 关系表达式的结果为真返回True,否则返回False
a=1,b=2
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 True |
> | 大于 - 返回x是否大于y | (a > b) 返回 False |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写 | (a < b) 返回 True |
>= | 大于等于 - 返回x是否大于等于y | (a >= b) 返回 False |
<= | 小于等于 - 返回x是否小于等于y | (a <= b) 返回 True |
🚀 赋值运算符和赋值运算表达式
- 赋值运算符用来将表达式的结果赋给变量
- 由赋值运算符与赋值运算对象组成的式子称为赋值运算表达式
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
:= | 海象运算符,可在表达式内部为变量赋值 | a = 1 if a > 0: print("1>0") 等同于if a:=1 > 0: print("1>0") |
a = b = c = 100
s = 0
s += a
s += b
s += c
print("s =",s) # s=300
🚀 逻辑运算符和逻辑运算表达式
a=10,b=20
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 | (a and b) 返回 20 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
True and True # True
True and 3 # 3
0 and True # 0
0 and 3 # 0
False or True # True
False or 4 # 4
3 or True # 3
3 or 4 # 3
not True # False
not 3 # False
🚀 位运算符和位运算表达式
位运算符用来把两个运算对象按照二进制进行位运算,由位运算符与位运算对象组成的式子称为位运算表达式
a=60,b=13
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
使用“^”运算符对字符加密和解密。
key = input("请输入加密密钥: ")
enc = input("请输入要加密的字符: ")
dec = ord(key) ^ ord(enc) #对字符加密.
print("加密结果:",chr(dec))
enc = ord(key) ^ dec #对字符解密.
print("解密结果:",chr(enc))
'''
请输入加密密钥: 6
请输入要加密的字符: a
加密结果: W
解密结果: a
'''
🚀 成员运算符和成员运算表达式
成员运算符用来判断两个对象之间的关系。由成员运算符与成员运算对象组成的式子称为成员运算表达式
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
成员运算符的使用
元曲四大家 = ["关汉卿"," 白朴"," 郑光祖","马致远"]
if "汤显祖" in 元曲四大家:print("'汤显祖'是元曲四大家之一.")
else: print("'汤显祖'不是元曲四大家之一.")
# '汤显祖'不是元曲四大家之一
🚀 身份运算符和身份运算表达式
身份运算符用来比较两个对象之间的存储单元, 由身份运算符与身份运算对象组成的式子称为身份运算表达式
运算符 | 描述 | 实例(id指内存地址) |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False |
注意区分
a == b
:比较对象a和对象b的值是否相等
a is b
:比较对象a和对象b是否有相同的引用,即id是否相等(内存位置),相当于java中equal
operator.eq(a, b)
函数:与a == b
同理
比较两个整型变量
import operator
a = 20
b = 20
print("a is b ?",a is b) # a is b ? True
print("a == b ?",a == b) # a == b ? True
print("operator.eq(a,b) ?",operator.eq(a,b)) # operator.eq(a,b) ? True
比较两个列表对象
import operator
x = [1,4,8]
y = [1,4,8]
print("x is y ?",x is y) # x is y ? False
print("x == y ?",x == y) # x == y ? True
print("operator.eq(x,y)?",operator.eq(x,y)) # operator.eq(x,y)? True
2.5.2 运算符优先级
从最高到最低优先级的所有运算符
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,求余数和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ ` | ` |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
使用运算符计算表达式
a = 10; b = 20; c = 30; d = 40
e = a + b * c / d
print("e =",e) # e = 25.0
f = (a + b) * c / d
print("f =",f) # f = 22.5
2.5.3 补充说明
Python中的一些运算符不仅可用于数字等运算,还可以用于对字符串、列表和元组等组合对象的运算
Python支持++i、–i运算符,但含义和其他语言中的不同
Python不支持**i++、i–**运算符
++
和--
i = 2
++i #等价于+(+i)=2
--i #等价于-(-i)=2
2--3 #等价于2-(-3)=5
2.6 特殊内置函数
2.6.1 内置函数简介
- 内置函数(Built-In Functions,BIF)是Python的内置对象类型之一,封装在标准库模块
_ _builtins_ _
中- 可以直接在程序中使用,如
input()
函数、print()
函数、abs()
函数等- Python中的内置函数使用C语言进行了大量优化,运行速度快,推荐优先使用
使用help()函数查看内置函数用法。
help("函数名")
help("pow")
'''
Help on built-in function pow in module builtins:pow(x,y,z=None,/)Equivalent to x**y (with two arguments) or x**y % z (with three arguments)Some types, such as ints, are able to use a more efficient algorithm when invoked using the three argument form.
'''
2.6.2 特殊内置函数
🚀 range()函数
range()函数返回一个整数序列的迭代对象,其一般格式为:
range([start,]stop[,step])
其中,
start为计数初始值,默认从0开始。
stop为计数终值,但不包括 stop。
step为步长,默认值为1。当start比stop大时,step为负整数。
list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(2,10)) # [2, 3, 4, 5, 6, 7, 8, 9]
list(range(1,10,2)) # [1, 3, 5, 7, 9]
list(range(5,1,-1)) # [5, 4, 3, 2]
🚀 type()和isinstance()函数
type(object)
:接收一个对象object作为参数,返回这个对象的类型isinstance(object, class)
:判断接收的对象object是否是给定类型class的对象:如果是,则返回True;否则返回False
使用type()函数和isinstance()函数判断对象类型
print("'innovate'的类型是:",type("innovate")) # 'innovate'的类型是: <class 'str'>
print("6是整型数吗?",isinstance(6,int)) # 6是整型数吗? True
🚀 eval()函数
eval()
函数用来执行一个字符串表达式,并返回表达式的值,其一般格式为:eval(expression[,globals[,locals]])
其中,expression为表达式,globals为变量作用域,可选,必须是一个字典对象,locals为变量作用域,可选,可以是任何映射(map)对象
c=eval('2 + 3')
print("c=",c) # 5
a,b = eval(input("请输入两个数(用','隔开): ")) # 请输入两个数(用','隔开):5, 8
print("a = %d, b = %d."%(a,b)) # a = 5, b = 8
🚀 map()函数
map()
函数把函数依次映射到序列或迭代器对象的每个元素上,并返回一个可迭代的map对象作为结果,其一般格式为:map(function,iterable,…)
, 其中,function为被调用函数,iterable为一个或多个序列
def cube(x):return x ** 3
a=list(map(cube,[1,2,3,4,5])) # [1, 8, 27, 64, 125]
print(a[:])
def add(x,y):return x + y
b=list(map(add,[1,3,5,7,9],[2,4,6,8,10]))
print(b[:]) # [3, 7, 11, 15, 19]
a,b = map(int,input("请输入两个数(用空格隔开): ").split()) # 请输入两个数(用空格隔开): 1 2
print("a = %d, b = %d."%(a,b)) # a = 1, b = 2
🚀 filter()函数
filter()
函数用于过滤掉不符合条件的元素,返回一个迭代器对象,其一般格式为:filter(function,iterable)
def IsEvenFunc(n):return n % 2 == 0
a=list(filter(IsEvenFunc,[1,2,3,4,5,6,7,8,9,10]))
print(a[:]) # [2, 4, 6, 8, 10]
🚀 zip()函数
zip()
函数接收任意多个可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回一个可迭代的zip对象,其一般格式为:zip([iterable,...])
,iterable为一个或多个迭代器。
a=list(zip(["泰山","黄山","庐山","华山"],["山东","安徽","江西","陕西"]))
print(a[:]) # [('泰山', '山东'), ('黄山', '安徽'), ('庐山', '江西'), ('华山', '陕西')]
z = zip([1,2,3],[4,5,6])
c,d=list(zip(*z))
print(c[:],d[:]) # (1, 2, 3) (4, 5, 6)
*zip[iterable]
表示将元素解压开
🚀 枚举函数enumerate()
枚举函数
enumerate()
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,其一般格式为:enumerate(sequence,[start = 0])
,sequence:一个序列、迭代器或其他支持的迭代对象。start:下标起始位置,可选
weeks = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
a=list(enumerate(weeks))
print(a[:])
# [(0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'),(5, 'Friday'), (6, 'Saturday')]
2.7 典型案例
🚀 2.7.1 计算复杂算术运算表达式的值
计算算术运算表达式
import math
a = math.sin(45 * 3.1415926 / 180) #计算sin45°.
b = math.exp(2) #计算e2.
c= math.log10(80) #计算log10(80).
d = math.sqrt(18) #计算 .
sum = a + (b + c) / d #计算整个表达式的值.
print("sum = %8.6f"%sum) #sum = 2.897287
🚀 2.7.2 求几何面、几何7的(表)面积或体积
计算圆锥体的表面积和体积
import math
PI = math.pi
r = float(input("请输入圆锥体的半径: "))
h = float(input("请输入圆锥体的高: "))
s1 = PI * r ** 2
s2 = PI * r * math.sqrt(r ** 2 + h ** 2)
s = s1 + s2
v = 1/3 * PI * r ** 2 * h
print("圆锥体的表面积为: %6.2f"%s)
print("圆锥体的体积为: %6.2f"%v)
'''
请输入圆锥体的半径: 3.0
请输入圆锥体的高: 4.0
圆锥体的表面积为: 75.36
圆锥体的体积为: 37.70
'''
🚀 2.7.3 解一元二次方程
求方程2x2+3x+1=0的根
import math
a = 2.0
b = 3.0
c = 1.0
pbs = b ** 2 - 4 * a * c
x1 = (-b + math.sqrt(pbs)) / (2 * a)
x2 = (-b - math.sqrt(pbs)) / (2 * a)
print("x1 =",x1) # x1 = -0.5
print("x2 =",x2) # x2 = -1.0
🚀 2.7.4 验证码验
编程实现验证码验证
import random
str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
len = str.__len__()
yzm = ""
for i in range(4):yzm = yzm + str[random.randint(0,len-1)]
print("当前验证码:",yzm)
yzmInput = input("请输入验证码: ")
if yzm == yzmInput: print("验证通过!")
else:print("验证失败!")
'''
运行结果:
当前验证码: aiFh
请输入验证码:aiFh
验证通过!
'''
这篇关于Python随堂笔记 常量 运算符 内置函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!