开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情
编译型语言和解释型语言
编译型语言
一次编译,无限次运行。
编译型语言通常需要将程序打包成可执行文件,如打包成exe,然后运行。
编译型语言通常是不能跨平台的,比如将java程序打包成exe只能在windows系统上运行,却不能在linux系统上运行。
解释型语言
一次编写到处运行。
Python就属于解释型语言,可以跨平台运行(如同一段程序在windows、linux、macos系统上运行)。
总结
Python是什么
Python是一种开源的解释型脚本编程语言,主要有以下优点:
- 语法简单(相比C/C++、Java等)
- Python是开源的、免费的,是高级语言
- Python是解释型语言,能跨平台
- Python是面向对象的编程语言
- 功能强大(模块多),可扩展性强
缺点:运行速度慢,代码加密困难
Python环境
python的安装就不说了,计算机二级python考试用的环境是IDLE:
变量类型与运算符
python变量的定义与使用
name = value #name就是变量,value是值
n = 10 #如这里的n=10,就是把10赋给变量n
使用python变量的时候,只要知道python变量的名字即可用,另外,变量必须要赋值。
整数类型int
在python中,整数分好几种形式,如二进制、十进制、八进制、十六进制等。
十六进制是0x开头,二进制是0b,八进制0o,十进制就没什么好说了。
#十六进制
hex1 = 0x45
hex2 = 0x4Af
print("hex1Value: ", hex1) #结果是69,0x45的10进制就是69嘛
print("hex2Value: ", hex2)
#二进制
bin1 = 0b101
print('bin1Value: ', bin1)
bin2 = 0B110
print('bin2Value: ', bin2)
#八进制
oct1 = 0o26
print('oct1Value: ', oct1)
oct2 = 0O41
print('oct2Value: ', oct2)
#s上述运行结果:
hex1Value: 69;hex2Value: 1199;bin1Value: 5;bin2Value: 6;oct1Value: 22;oct2Value: 33
数字分隔符:为提高数字的可读性,python可以用下划线_作为数字的分隔符(整数小数都能用),如1_301_547。
小数/浮点数(float)
小数有十进制和指数两种形式。
十进制: 10.12
指数写法: aEn。a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。如2.1E5 = 2.1×10^5。
注意,只要写成指数形式就是小数,即使它的最终值看起来像一个整数。另外,python只有float这一种小数形式,不像别的语言有double什么的。
复数类型complex
复数:a+bj,python中复数的虚部以j或者J作为后缀,不能写成i或者别的什么字母。
字符串
python中字符串是以单引号或多引号包围的,如'abc',"bch"。
当字符串中出现引号时需要做特殊处理,如下:
方式一:
str1 = "I'm a great coder!" #使用双引号包围含有单引号的字符串
str2 = '引文双引号是",中文双引号是“' #使用单引号包围含有双引号的字符串
方式二: 在引号前面添加反斜杠``就可以对引号进行转义
str1 = 'I'm a great coder!'
str2 = "引文双引号是",中文双引号是“"
- 字符串的换行:在行尾添加反斜杠``
s2 = 'It took me six months to write this Python tutorial. \
Please give me more support. \
I will keep it updated.'
长字符串用三引号来包着,可以不用\直接换行的。
str = '''It took me 6 months to write this Python tutorial.
Please give me a to 'thumb' to keep it updated.
The Python tutorial is available at http://c.biancheng.net/python/.'''
反斜杠带来的问题
要表示一个包含 Windows 路径D:\Program Files\Python 3.8\python.exe这样的字符串,在 Python 程序中直接这样写肯定是不行的,因为的特殊性,我们需要对字符串中的每个都进行转义,也就是写成D:\Program Files\Python 3.8\python.exe这种形式才行。
字节串bytes类型
bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。
字节串(bytes)和字符串(string)的对比:
- 字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。
- 字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
- 字节串和字符串都是不可变序列,不能随意增加和删除数据。
bytes 是以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串。
举例:
#创建空 bytes
b1 = bytes()
#通过空字符串创建空 bytes
b2 = b''
#为 bytes() 方法指定字符集
b3 = bytes('我8岁了', encoding='UTF-8')
print("b3: ", b3)
->结果:b3: b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
#通过 encode() 方法将字符串转换成 bytes
b4 = "我8岁了".encode('UTF-8')
print("b4: ", b4)
->结果:b4: b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
#通过b前缀将字符串转换成 bytes
b5 = b'http://c.biancheng.net/python/'
#通过 decode() 方法将 bytes 转换成字符串
str1 = b4.decode('UTF-8')
print("str1: ", str1)
->结果:str1: 我8岁了
从运行结果可以发现,对于非 ASCII 字符(键盘上显示的基本都是ASCII字符,汉字不是ASCII字符),print 输出的是它的字符编码值(十六进制形式),而不是字符本身。非 ASCII 字符一般占用两个字节以上的内存,而 bytes 是按照单个字节来处理数据的,所以不能一次处理多个字节。
bool布尔类型
bool类型就是对True和错False。如5 > 3`就会返回True。bool 类型就是用于代表某个事情的真(对)或假(错),如果这个事情是正确的,用 True(或 1)代表;如果这个事情是错误的,用 False(或 0)代表。非0的数都表真。
input()函数,获取输入(从键盘上输入)的字符串
语法:str = input(tipmsg)
input 会将读取到的字符串放入 str 中,语法中的tipmsg是提示信息。如下:
str = input("请输入0-9之间的数字:")
再看下面的例子,我们希望从键盘上输入两个数字让它们想加,程序中输入了8和7并让他们想加,得到的结果是87,并不是我们想要的15。原因是Python 只是它们当成了字符串,
+起到了拼接字符串的作用,而不是求和的作用。
我们可以使用 Python 内置函数将字符串转换成想要的类型,比如:
- int(string) 将字符串转换成 int 类型;
- float(string) 将字符串转换成 float 类型;
- bool(string) 将字符串转换成 bool 类型。
print()函数:作用就是输出
语法:print (value,...,sep='',end='\n',file=sys.stdout,flush=False)
我们一般用的都是print(value)或print(value1,value2,...)。
语法中sep的作用是:输出多个变量和字符串时,指定分隔符,如
print("读者名:" ,user_name,"年龄:",user_age,sep='|')
-->读者名:|Charlie|年龄:|8
## 默认
print("读者名:" ,user_name,"年龄:",user_age)
-->读者名:Charlie 年龄:8
语法中end的作用时输出完毕是否要换行,默认是\n,就是换行。
#换行(默认)
print(30)
print(40)
->30
->40
####不换行
print(40,'\t',end="")
print(5O,'\t',end="")
print(60,'\t',end="")
->40 50 60
语法中file参数的作用是指定输出到哪,默认的sys.stdout是标准输出,输出到屏幕。假设有特殊需求,我们就可以更改file参数。
f = open("demo.txt","w")#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝田日暖玉生烟',file=f)
f.close()
上面程序中,open() 函数用于打开 demo.txt 文件,接连 2 个 print 函数会将这 2 段字符串依次写入此文件,最后调用 close() 函数关闭文件。
格式化输出
print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
| 转换说明符 | 解释 |
|---|---|
| %d、%i | 转换为带符号的十进制整数 |
| %o | 转换为带符号的八进制整数 |
| %x、%X | 转换为带符号的十六进制整数 |
| %e | 转化为科学计数法表示的浮点数(e 小写) |
| %E | 转化为科学计数法表示的浮点数(E 大写) |
| %f、%F | 转化为十进制浮点数 |
| %g | 智能选择使用 %f 或 %e 格式 |
| %G | 智能选择使用 %F 或 %E 格式 |
| %c | 格式化字符及其 ASCII 码 |
| %r | 使用 repr() 函数将表达式转换为字符串 |
| %s | 使用 str() 函数将表达式转换为字符串 |
转换说明符(Conversion Specifier)只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。
【实例】输出一个整数:
age = 8
print("C语言中文网已经%d岁了!" % age)
运行结果: C语言中文网已经8岁了!
在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%d说明符,它最终会被后面的 age 变量的值所替代。
中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。
python转义字符
内容后面完善
下面的数据类型转换、算术运算符、赋值运算符、位运算符、逻辑运算符、比较运算符这些看看,有概念暂时就ok。
数据类型转换
把整数类型转成了字符串,转成了浮点数什么的
| 函 数 | 作 用 |
|---|---|
| int(x) | 将 x 转换成整数类型 |
| float(x) | 将 x 转换成浮点数类型 |
| complex(real,[,imag]) | 创建一个复数 |
| str(x) | 将 x 转换为字符串 |
| repr(x) | 将 x 转换为表达式字符串 |
| eval(str) | 计算在字符串中的有效 Python 表达式,并返回一个对象 |
| chr(x) | 将整数 x 转换为一个字符 |
| ord(x) | 将一个字符 x 转换为它对应的整数值 |
| hex(x) | 将一个整数 x 转换为一个十六进制字符串 |
| oct(x) | 将一个整数 x 转换为一个八进制的字符串 |
算术运算符
| 运算符 | 说明 | 实例 | 结果 |
|---|---|---|---|
| + | 加 | 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 |
赋值运算符
| 运算符 | 说 明 | 用法举例 | 等价形式 | |||
|---|---|---|---|---|---|---|
| = | 最基本的赋值运算 | 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 | |||
| &= | 按位与赋值 | x &= y | x = x & y | |||
| = | 按位或赋值 | x | = y | x = x | y | |
| ^= | 按位异或赋值 | x ^= y | x = x ^ y | |||
| <<= | 左移赋值 | x <<= y | x = x << y,这里的 y 指的是左移的位数 | |||
| >>= | 右移赋值 | x >>= y | x = x >> y,这里的 y 指的是右移的位数 |
位运算符
| 位运算符 | 说明 | 使用形式 | 举 例 | |||
|---|---|---|---|---|---|---|
| & | 按位与 | a & b | 4 & 5 | |||
| 按位或 | a | b | 4 | 5 | ||
| 按位异或 | a ^ b | 4 ^ 5 | ||||
| ~ | 按位取反 | ~a | ~4 | |||
| << | 按位左移 | a << b | 4 << 2,表示整数 4 按位左移 2 位 | |||
| >> | 按位右移 | a >> b | 4 >> 2,表示整数 4 按位右移 2 位 |
比较运算符
| 比较运算符 | 说明 |
|---|---|
大于,如果>前面的值大于后面的值,则返回 True,否则返回 False。 | |
| < | 小于,如果<前面的值小于后面的值,则返回 True,否则返回 False。 |
| == | 等于,如果==两边的值相等,则返回 True,否则返回 False。 |
| >= | 大于等于(等价于数学中的 ≥),如果>=前面的值大于或者等于后面的值,则返回 True,否则返回 False。 |
| <= | 小于等于(等价于数学中的 ≤),如果<=前面的值小于或者等于后面的值,则返回 True,否则返回 False。 |
| != | 不等于(等价于数学中的 ≠),如果!=两边的值不相等,则返回 True,否则返回 False。 |
| is | 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。 |
| is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。 |
逻辑运算符
| 逻辑运算符 | 含义 | 基本格式 | 说明 |
|---|---|---|---|
| and | 逻辑与运算,等价于数学中的“且” | a and b | 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 |
| or | 逻辑或运算,等价于数学中的“或” | a or b | 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 |
| not | 逻辑非运算,等价于数学中的“非” | not a | 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。 |
三目运算符
语法格式:exp1 if contion else exp2
如果条件成立就执行exp1,条件不成立就执行exp2,如:
a = 1 if 3 > 5 else a = 0
-->结果:a=0