学习Python的第二节课
1、python编码格式
(1)介绍编码方式种类
美国设计的ASCII编码、中国的GBK编码为例,阐述编码的概念。并通过不同编码格式之间的对比引出unicode编码方式。
(2)编码之间的转换
举例说明不同编码之间的转换方式。文本文件编辑后重新保存。在这个过程中编码格式的转换。
(3)指定编码
在源代码文件的第一行指定编码格式。
2、变量、常量和关键字
通过对标识符定义的理解,学会命名标识符。
(1)变量
推荐使用具有固定含义的英文单词或缩写,srv=serve,skt=socket,一般以posix命名规则为主
驼峰命名法
名称以单词自动连接,且每个单词首字母大写
(1)大驼峰,每个单词第一个字母大写
在Python中给类命名使用此法
(2)小驼峰,类似大驼峰,但第一个字母小写
在Python中一般给浦东变量或函数命名
(3)posix写法
多个单词用下划线连接
单词全部小写
保留字和关键字
变量名必须避开,不能跟关键字和保留字重复。如class,def,break等。
查看保留字和关键字
(4)
也可以用中文命名,但是一般来说不提倡
注:Python中赋值之前不需要提前声明,直接对其赋值便可,Python不用去声明函数的返回类型,
是由于其“若类型”的语言特性决定的。python是一种解释型语言,当你定义了一个变量时,解释器
自动完成对变量内存的分配,不需要我们自己去定义类型。
(2)关键字
关键字是特殊的标识符。使用keyword模块中的kwlist属性来查看python关键字。
```python
import keyword
keyword.kwlist
```
['False','None','True','and','as','assert','async','await','break','class','continue','def',
'del','elif','else','except','finally','for','from','global','if','import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass','raise','return','try','while','with','yield']
(3)常量
Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,python程序一
般通过约定俗成的变量名全大写的形式表示这是一个常量。然而这种方式并没有真正实现常量,
其对应的值仍然可以被改变。后来,python提供了新的方法实现常量:即通过自定义类实现常量。
这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件。
3、数值类型
Python数值类型主要包括:整型、浮点型、复数、布尔类型。
(1)整数类型int
(2)浮点数类型float
(3)复数类型
(4)布尔类型bool
4、不同数值类型之间的转换
通过一些BIF(built in functions)来转换:
int() 转换为整数,默认十进制
bin() oct() hex() 二进制转换、八进制转换、16进制转换
float() 整数转换为浮点型
complex() 转换为复数
5、获取关于数据类型的函数
type(变量名):查看对象的类型;
isinstance( 实例对象,类):判断对象是否是为指定类型的实例。
6、运算符
(1)运算符及表达式
表达式由运算符(*、/等)和操作数组成的序列,操作数可以是基本类型或自定义类型的变量、常量。
表达式中包含运算符,例如:1*2+3表达式中的(+)和(*)就是运算符。
算术运算符:由算术运算符和算术对象组成的序列,称作算术表达式。
赋值运算符:用来将表达式的结果赋给变量。 由赋值运算符和赋值运算对象组成的序列,称作赋值表达式。
复合运算符:由加、减、乘、除、求余等组合在一起的运算表达式。
(2)其它运算符及优先级
关系运算符及关系表达式 :用来比较两个对象之间的关系,可以是数值、字符串、表达式等。 由关系运算符和比较对象组成的序列,称作关系表达式。
逻辑运算符及逻辑表达式:用来判断逻辑运算对象之间的关系。 由逻辑运算符和逻辑运算对象组成的序列,称作逻辑表达式。
成员运算符及成员运算表达式:用来判断两个对象之间的关系。 由成员运算符和成员运算对象组成的序列,称作成员运算表达式。
身份运算符及身份运算表达式 :用来比较两个对象之间的存储单元。 由身份运算符和身份运算对象组成的序列,称作身份运算表达式。
位运算符及位运算表达式 :将两个运算对象按照二进制进行位运算。 由位运算符和位运算对象组成的序列,称作位运算表达式。
(3)优先级
运算符的优先级:表达式是有优先级的,例如表达式:“0 * 1 + 2”和“0 + 1 * 2”结果一定不一样,在“0 + 1 * 2”中优先运算“1 * 2”。
运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘、除、取模、取整除
+ - 加法、减法
>> << 右移、左移运算符
& 位与运算符
^ | 位异或运算符
<= < > >= 比较运算符
<> == != 大于、小于、等于、不等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符
7、作业
- 区分有效和无效的变量名。
_stiei1 有效
Stiei shanghai无效
1shanghai无效
&string888无效
true有效
True无效
And有效
import无效
- 视频中介绍的查找变量类型两个函数 type() 和 isinstance() ,有什么区别呢?
type()是可以直接判断出括号内部的变量类型,而isinstance()是判断一个变量是否为什么类型,返回的是True和False
- 使用 int() 将小数转换为整数采用向下取整,你有什么办法使得 int() 按照“四舍五入”的方式取整呢?
x=float(input("请输入数字:"))
if x-int(x)>=0.5:
x=int(x)+1
else:
x=int(x)
print("四舍五入后的数字为:",x)
或者可以再简单点
x=int(float(input("请输入数字:"))+0.5)
print("四舍五入后的数字为:",x)
- 将如下代码敲出来在 Jupyter notebook 中运行,每一行后面添加注释解释这一行语句的用途。计算 123 的逆序数字,即转换为 321。
>>>a = 123
>>>x = a//100
>>>y = a//10%10
>>>z = a%10
>>>b = z*100+y*10+x
>>>print(b)
321
这个就是注释代码而已
a = 123 #将123赋值给a
x = a//100 #a通过地板除除以100等于1.23,再取整后得到1赋值给x
y = a//10%10 #a先通过地板除除以10得到12.3再取整后得到12,再通过10求余得到2,最后再赋值给y
z = a%10 #a对10求余得到3,再赋值给z
b = z*100+y*10+x #z为3乘上100,加上y为2乘上10,加上x为1
print(b) #输出b的值为321
- 计算如下表达式的值
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8
1 and 'a' and ''
1 or 10 or ''
第一行代码最后得到的值是4(我自己计算得到的是8,现在还不明白,目标后再后来补充)
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8
第二行的值是’ ’
1 and 'a' and ''
第三行的值是1
1 or 10 or ''