#本章目标
掌握Python中的保留字与标识符
理解Python中变量的定义及使用
掌握Python中基本数据类型
掌握数据类型之间的相互转换
掌握eval()函数的使用
了解不同的进制数
掌握Python中常用的运算符及优先级
1,保留字与标识符
保留字
指在Python中被赋予特定意义的一些单词,在开发程序时,不可以把这些保留字作为变量,函数,类,模块和其他对象的名称使用。
和 | 像 | 生效 | 开始 | 班 | 继续 | |
---|---|---|---|---|---|---|
否则如果 | 其他的 | 除了 | 最后 | 给 | 来自 | |
错误 | 全球的 | 如果 | 改进 | 在…里面 | 是 | |
非全局的 | 不 | 没有一个 | 或 | 跳过 | 增加 | 返回 |
尝试 | 正确 | 与…同时 | 具有 | 产量 | 等待 | 异步 |
#查看python中的保留字,keyWord函数
import keyword
print(keyword.kwlist)
标识符命名的规则
<>可以是字符(英文、中文)、下划线“_”和数字,并且第一个字符不能是数字
<>不能使用Python中的保留字
<>标识符严格区分大小写
<>以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符
<>允许使用中文作为标识符,但不建议使用
标识符的命名规范
<>模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母。例如: grame_ main
<>包名尽量短小,并且全部使用小写字母,不推荐使用下划线。例如:com.ysjpython,不推荐使用com_ ysjpython
<>类名采用单词首字母大写形式(Pascal风格)。例如: MyClass
<>模块内部的类采用“_”Pascal风格的类名组成,例如:在MyClass中的内部类_ InnerMyClass
<>函数、类的属性和方法的命名,全部使用小写字母,多个字母之间使用下划线分隔
<>常量命名时采用全部大写字母,可以使用下划线
<>使用单下划线"_”开头的模块变量或函数是受保护的,在使用"from XXX import *”语句从模块中导入时,这些模块变量或函数不能被导入
<>使用双下划线"_”开头的实例变量或方法是类私有的
<>以双下划线开头和结尾的是Python的专用标识,例如: _init_ ()表示初始化函数
2,变量与常量
#变量的语法结构
变量名=value
#变量的定义和使用
luck_number=520 #定义
my_name='中国'
print(type(luck_number)) #利用type函数查看变量的类型
print(type(my_name))
#python动态修改变量的数据类型,通过赋不同类型的值就可以直接修改
luck_number='天津'
print('luck_number的数据类型是:',type(luck_number)) #<class 'str'>
#在Python中允许多个变量指向同一个值
a=b=123 #a,b都指向了13
print(a,b)
print(id(a)) #id()用来查看对象的内存地址。2029387600
print(id(b)) #2029387600
变量命名应遵循的规则
<>变量名必须是一个有效的标识符
<>变量名不能使用Python中的保留字
<>慎用小写字母I (挨) 和大写字母0
<>应选择有意义的单词作为变量名
常量
是在程序运行过程中,值不允许改变的量。
<>全部使用大写字母和下划线命名
#常量的定义
pi=3.14 #定义一个变量
PI=3.14 #定义一个常量
3,数值类型
整数类型
表示的数值是没有小数部分的数值,包含正整数,负整数和0.
#整数的四种表现形式
num=123 #十进制表示整数
num2=0b010101 #二进制表示整数
num3=0o752 #八进制表示整数
num4=0xAc8 #十六进制表示整数
print(num)
print(num2)
print(num3)
print(num4)
浮点数类型
表示带有小数点的数值,由整数部分和小数部分组成.
#注意事项:
两个浮点数类型再进行运算时,有一定的概率运算结果后增加一些“不确定的”尾数。
Python中的复数与数学中的复数形式完全一致,由实部和虚部组成。
中Python中实数部分用.real表示。虚数部分使用.imag表示。
x=123+456j
print('实数部分:',x.real)
print('虚数部分:',x.imag)
#浮点数类型的使用
height=175.12
print(height)
print(type(height))
x=1
y=1.0
print('x的tpye:',type(x)) #int
print('y的tpye:',type(y)) #float
x=1.99E123
print('科学计数法',x,type(x)) #float
#不确定的尾数问题
print(0.1+0.2) #0.30000000000000004
print(round(0.1+0.2))
字符串类型
连续的字符序列,可以表示计算机所能识别的一切字符
字符串的界定符:单引号,双引号,三引号
print("北京")
print("欢迎你")
print('------------')
print("北京\n欢迎你") #\n换行符
print('------------')
print("北京\t欢迎你") #\t制表位
print("hello\toooo") #hello是5个字符,一个制表位是8个字符。8-5=3,所以有三个空格。
print("hellooooo")
#引号问题
print('老师说:\'12345\'') #冒号是正常的,引号是通过转义实习的
#原字符,是转义字符失效的符号r
print("北京\n欢迎你")
print(r"北京\n欢迎你")
索引
字符串又被称为有序的字符序列,对字符串中某个字符的检索称为索引。
切片
对字符串中某个子串或区间的检索称为切片
切片的语法结构:(左闭右开)
a='HELLOWORLD'
print(a[0],a[-10]) #打印H H
print(a[2:7]) #从2开始到7结束不包含7,。左闭右开。正向递增
print(a[-8:-3]) #反向递减
print(a[:5]) #没有写N,默认从0开始
print(a[5:]) #没有写M,默认切到字符串的结尾
print(a[:]) #N,M都不写,就是全部输出
常用的字符串操作
x='北京'
y='欢迎你'
print(x+y) #两个字符串的连接
print(x*5) #对x进行复制
print('北京' in x) #存在为TRUE
print('上海' in y) #不存在为FALSE
4,布尔类型
<>用来表示**“真”值或“假”**值的数据类型。
<>在Python中使用标识符True或False表示布尔类型的值。
<>True表示整数1,False表示整数0。
#布尔值为False的情况如下:
>False或者是None
>数值中的0,包含0,0.0,虚数0
>空序列,包含空字符串,空元组,空列表,空字典,空集合
>自定义对象的实例,该对象的_bool_()方法返回False或_len_()方法返回0
x=True
print(x)
print(type(x)) #bool类型
print(x+10) #10.1+10
print(False+10) #10.0+10
print(bool(10)) #测试整数10的布尔值。True
print(bool(0),bool(0.0)) #False
#总结:非0的整数的布尔值都为True
print(bool("北京欢迎你")) #True
print(bool("")) #False
#总结:所以非空字符串的布尔值都为True
print(bool(False)) #False
print(bool(None)) #False
数据类型之间的转换
#类型转换分为:隐式转换和显式转换
x=10
y=3
z=x/y #在执行除法运算的时候,将运算的结果赋值给z
print(z,type(z)) #隐式转换,通过运算隐式的转了结果的类型
#float类型转成int类型,只保留整数部分
print('float类型转换成int类型:',int(3.14))
print('float类型转换成int类型:',int(-3.14))
print('float类型转换成int类型:',int(10.0))
print('float类型转换成int类型:',int(-10.0))
#将int转成float类型
print('将int转成float类型:',float(10))
#将str转成int类型
print(int('10')+int('20'))
#将字符串转换成int或float时报错的情况
#print(int('18a')) #ValueError: invalid literal for int() with base 10: '18a'
#print(int('3.14')) #ValueError: invalid literal for int() with base 10: '3.14'
#print(float('4a123')) #ValueError: could not convert string to float: '4a123'
#chr(),ord()一对
print(ord('李')) #李在unicode表中对应的整数值
print(chr(26446)) #26446整数在unicode表中对应的字符是什么
#进制之间的转换操作,十进制与其他进制之间的转换
print('十进制转成十六进制:',hex(10))
print('十进制转成八进制:',oct(10))
print('十进制转成二进制:',bin(10))
5,eval函数
<>内置函数。
<>用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符串。
<>eval()函数经常和input函数一起使用。
eval的语法格式:
变量=eval(字符串)
a='3.14+3'
print(a,type(a)) #str类型
b=eval(a) #使用eval函数去掉a这个字符串中两侧的引号,执行加法运算
print(b,type(b))
#eval函数经常与input()函数一起使用,用来获取用户输入的数值
height=eval(input('请输入您的身高:'))
print(height,type(height)) #175 <class 'int'
6,算术运算符
7,赋值运算符
算术运算符的优先级由高到低是:
第一级:**
第二级:* / % //
第三级:+ -
# python支持链式赋值
a=b=c=100
print(a,b,c)
#Python支持系列解包赋值
a,b=10,20
print(a,b)
#如何交换两个变量的值?
a,b=b,a
print(a,b)
8,比较运算符
9,逻辑运算符
and:有0出0,全1出1
or:有1出1,全0出0
not:有1出0,有0出1
10,位运算和运算符的优先级
位运算符
&:全1出1
|:有1出1
^:相同为0,不同为1
~:每一位取反
print('左移位',2<<2) #8,表示2*2*2
print('右移位',8>>2) #2,表示8/2/2
print('右移位',-8>>2)
#左乘右除
优先级***
练习题:
实战一:***
#从键盘获取一个4位整数,分别输出个位,十位,百位,千位上的数字
#需求:可以使用eval()函数或者int()函数将从键盘获取的数字串转成int类型,通过整除和取余操作分别获取数字。
#方法一:利用算术运算
num=int(input('请输入一个四位整数:'))
print('个位上的数字:',num%10)
print('十位上的数:',num//10%10)
print('百位上的数:',num//100%10)
print('千位上的数:',num//1000)
#方法二:利用字符串的索引
num=input('请输入一个四位整数:') #num是一个字符串类型
print('个位上的数:',num[3])
print('十位上的数:',num[2])
print('百位上的数:',num[1])
print('千位上的数:',num[0])
实战二:
#根据父母身高预测儿子的身高
father_height=eval(input(('请输入爸爸的身高:')))
mother_height=eval(input(('请输入妈妈的身高:')))
son_height=(father_height+mother_height)*0.54
print('预测儿子的身高为:',son_height)