非常详细非常零基础的Python教程:第一篇章

240 阅读10分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情

image.png

编译型语言和解释型语言

编译型语言

一次编译,无限次运行。

编译型语言通常需要将程序打包成可执行文件,如打包成exe,然后运行。

编译型语言通常是不能跨平台的,比如将java程序打包成exe只能在windows系统上运行,却不能在linux系统上运行。

解释型语言

一次编写到处运行。

Python就属于解释型语言,可以跨平台运行(如同一段程序在windows、linux、macos系统上运行)。

总结

image.png

Python是什么

Python是一种开源的解释型脚本编程语言,主要有以下优点:

  • 语法简单(相比C/C++、Java等)
  • Python是开源的、免费的,是高级语言
  • Python是解释型语言,能跨平台
  • Python是面向对象的编程语言
  • 功能强大(模块多),可扩展性强

缺点:运行速度慢,代码加密困难

Python环境

python的安装就不说了,计算机二级python考试用的环境是IDLE:

image.png

变量类型与运算符

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 为指数部分,是一个十进制整数;Ee是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 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之间的数字:")

image.png 再看下面的例子,我们希望从键盘上输入两个数字让它们想加,程序中输入了8和7并让他们想加,得到的结果是87,并不是我们想要的15。原因是Python 只是它们当成了字符串,+起到了拼接字符串的作用,而不是求和的作用。

image.png

我们可以使用 Python 内置函数将字符串转换成想要的类型,比如:

  • int(string) 将字符串转换成 int 类型;
  • float(string) 将字符串转换成 float 类型;
  • bool(string) 将字符串转换成 bool 类型。

image.png

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 + 1527.45
-4.56 - 0.264.3
*5 * 3.618.0
/除法(和数学中的规则一样)7 / 23.5
//整除(只保留商的整数部分)7 // 23
%取余,即返回除法的余数7 % 21
**幂运算/次方运算,即返回 x 的 y 次方2 ** 416,即 24

赋值运算符

运算符说 明用法举例等价形式
=最基本的赋值运算x = yx = y
+=加赋值x += yx = x + y
-=减赋值x -= yx = x - y
*=乘赋值x *= yx = x * y
/=除赋值x /= yx = x / y
%=取余数赋值x %= yx = x % y
**=幂赋值x **= yx = x ** y
//=取整数赋值x //= yx = x // y
&=按位与赋值x &= yx = x & y
=按位或赋值x= yx = xy
^=按位异或赋值x ^= yx = x ^ y
<<=左移赋值x <<= yx = x << y,这里的 y 指的是左移的位数
>>=右移赋值x >>= yx = x >> y,这里的 y 指的是右移的位数

位运算符

位运算符说明使用形式举 例
&按位与a & b4 & 5
按位或ab45
按位异或a ^ b4 ^ 5
~按位取反~a~4
<<按位左移a << b4 << 2,表示整数 4 按位左移 2 位
>>按位右移a >> b4 >> 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