1、Python基本概念
1、编译器&解释器 :
将代码编译成计算机能够识别的命令 计算机可以识别的机器码 0 1
区别:
编译器:全文翻译,编译型语言
解释器:实时翻译,解释型语言
2、python语言介绍
翻译的角度 :
解释型语言,编译型语言
高低语言维度 :
低级编程语言:代码可以直接被计算机识别:汇编语言
高级编程语言:代码无法直接被计算机识别,需要通过转换:c java python
3、Python 的优点
语法简洁&适合入门
非常强大的类库
开发效率高
4、python解释器
Cpython:python官方解释器
JPython
IronPython
pypy
Ipython
5、Python默认编码格式
默认的编码格式UTF-8;
![](https://img-blog.csdnimg.cn/img_convert/23b1ea0208124e3abacb0d602498fd02.png)
如果要修改默认的编码格式则需要在文件头添加新的编码格式,然后运行;
# -*- coding:GBK -*-
print("你是我的眼")
![](https://img-blog.csdnimg.cn/img_convert/0bc4fc2b605948f186927aa3e83c0e0d.png)
2、Python编译之简单输出
print("Hello Python")
![](https://img-blog.csdnimg.cn/img_convert/f582fbc5f65f4ed2addfe7ab505a6211.png)
想要让原本在一行的内容进行换行,可以这样做:
print("你好""中国")
print("你好\n""中国")
![](https://img-blog.csdnimg.cn/img_convert/38e5582a5b8a4fc99b5ce7d3f7124055.png)
如果直接输出语句,那么输出一句后则默认会换行;
print("春眠不觉晓")
print("处处闻啼鸟")
![](https://img-blog.csdnimg.cn/img_convert/53aecdea2d264821b4d5784af8929f3c.png)
如果不想让它换行,则可以在所输出内容的末尾加上end=""
print("夜来风雨声",end=",")
print("花落知多少",end="。")
![](https://img-blog.csdnimg.cn/img_convert/c5ac412cdbc644d4ac99a16bd0e4ee7f.png)
3、print()输出函数
print在python2中是一个关键字,使用时不必加括号;但在python3中是一个函数,使用时需要加括号。python3.3版本增加了flush参数。
print(self, *args, sep=' ', end='\n', file=None) # known special case of print
参数的具体含义如下:
sep -- 用来间隔多个对象。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。
file -- 要写入的文件对象。
print("www", "baidu", "com", sep="@") # 设置间隔符为@
print("www", "baidu", "com", sep=".") # 设置间隔符为.
print()
a = 1
b = "Hello World"
print(a, b) # 一次可以输出多个变量,变量之间必须用逗号分隔
print()
# 如果直接输出字符串,可以不使用逗号,使用逗号则表示空格
print("李白""李白")
print("李白", "李白")
print("Hai""Hai", sep='$', end='@', file=None ,flush=False)
#这里设置$为间隔符,@为结尾符
#如果多个字符串之间没有用逗号隔开,那么用sep设置了间隔符也没有效果
print()
print("Hai","Hai", sep='#', end='@', file=None ,flush=False)
#必须用逗号隔开,sep设置了间隔符才有效果
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/6eee6e86e5e14d02b532c230a30ddc9f.png)
![](https://img-blog.csdnimg.cn/img_convert/cd45d639f8e0482baffc92384f9ff806.png)
4、标准数据类型
文本类型: | str |
数值类型: | int, float, complex |
序列类型: | list, tuple, range |
映射类型: | dict |
集合类型: | set, frozenset |
布尔类型: | bool |
二进制类型: | bytes, bytearray, memoryview |
整数型int
整数类型是python中常用的数据类型,简称int,全程integ,可以用来运算
print(3+2) #加法运算
print(3-2) #减法运算
print(3/2) #除法运算(如果除不尽会有小数)
print(3//2) #求商的除法运算:只取商,不要小数
print(3*2) #乘法运算
print(3**2) #次幂运算:3的2次幂
![](https://img-blog.csdnimg.cn/img_convert/4698fcb3df9e43ada74e4d06340fae06.png)
布尔类型bool
print(1>2)
print(1 == 1)
![](https://img-blog.csdnimg.cn/img_convert/7fef4afafee84fc9873ffaf6ccbc93b6.png)
浮点型float
print(0.1*0.1)
print(0.1+0.1)
print(4.4%2)
print(4.4/2)
print(0.1**2)
![](https://img-blog.csdnimg.cn/img_convert/b4ada306876041dab5cc69e39cc91c7c.png)
为什么会出现上面的结果呢?
其原因在于十进制和二进制的转换上,计算机先要把十进制的数转化为二进制,然后再计算。
但是,在转化中,浮点数转化为二进制,就出问题了,例如:
十进制的 0.1,转化为二进制是:0.0001100110011001100110011001100110011001100110011…
也就是说,转化为二进制后,不会精确等于十进制的 0.1。
同时,计算机存储的位数是有限制的,所以,就出现上述现象了。
复数类型complex
复数由实部(real)和虚部(imag)构成,在 Python 中,复数的虚部以j或者J作为后缀,具体格式为:
a + bj #a 表示实部,b 表示虚部
a=complex(1, 2)
b=complex(3)
print(a,b)
c1 = 12 + 0.2j
print("c1值: ", c1)
print("c1数据类型:", type(c1))
c2 = 6 - 1.2j
print("c2值: ", c2)
#对复数进行简单计算
print("c1+c2: ", c1+c2)
print("c1*c2: ", c1*c2)
print("c1*c2数据类型:", type(c1+c2))
print("c1*c2数据类型:", type(c1*c2))
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/af3ecbba4df64acaa57f569c20ebe54c.png)
![](https://img-blog.csdnimg.cn/img_convert/0b94fb8c8c4f4c22abea3640f6a7db77.png)
字符串String
单引号 ' '
双引号 " "
多引号 """ """ ''' '''
+的作用:表示字符串拼接
*的作用:表示字符串出现了几次
单引号、双引号与多引号
print("hello world")
print('hello world')
print("""hello world""")
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/19b2e98db82f496ca62b9716418def90.png)
可以在单引号中包含双引号,或者在双引号中包含单引号;
print("Hello 'Python'")
print('Hello "Python"')
![](https://img-blog.csdnimg.cn/img_convert/2f71c33496784594a13cf196bc9f0fbe.png)
正常情况下,单引号和双引号的字符串是不支持直接在符号间换行输入的,以下两种方式可以实现;
方法一:
\n转义换行,是使用在引号里才能有效果
print("Hello 'Python'")
print("Hello\n'Python'") #转义换行
print(r"Hello\n'Python'") #加上r,显示原始字符串
![](https://img-blog.csdnimg.cn/img_convert/e005eafc8f46474984a08554638d0e6b.png)
方法二:
多引号
print("""
hello
python
""")
print('''
hello
world
''')
![](https://img-blog.csdnimg.cn/img_convert/03edcff1b765408787a9f689b33bdf47.png)
+的作用
String + String 字符串的拼接
print("崔倍"+"王七")
print(3*"我爱猫爷\n")
![](https://img-blog.csdnimg.cn/img_convert/228101e097d64b498be4c82726a3e531.png)
*的作用
N * String 字符串String出现N次拼接起来
![](https://img-blog.csdnimg.cn/img_convert/61da00dd3b6149ea972c0e114b527e14.png)
5、type()函数与isinstance() 函数
type() 可以用来查询变量所只带的对象类型
a=1
b=0.1
c="Hi!"
print(type(a))
print(type(b))
print(type(c))
![](https://img-blog.csdnimg.cn/img_convert/7dc9a2401d99417db0826078ecf34259.png)
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance(object, classinfo) #isinstance的语法
object -- 实例对象。
classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
a = 2
isinstance (a,int)
isinstance (a,str)
isinstance (a,(str,int,list)) # 是元组(str,int,list)中的一个,所以返回 True
isinstance (a,(str,bool,complex)) # 不是元组(str,bool,complex)中的一个,所以返回 False
print(isinstance (a,int))
print(isinstance (a,str))
print(isinstance (a,(str,int,list)) )
print(isinstance (a,(str,bool,complex)))
![](https://img-blog.csdnimg.cn/img_convert/1a0279c9d9aa46dcb150a0bfd07ed93c.png)
type()函数与isinstance()函数的区别
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
6、数据类型转换
Python 数据类型转换可以分为两种:
隐式类型转换 - 自动完成
显式类型转换 - 需要使用类型函数来转换
隐式类型转换
在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。
在下面的实例中,我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo
print("num_int的类型:",type(num_int))
print("num_flo的类型:",type(num_flo))
print("num_new的值:",num_new)
print("num_new的类型:",type(num_new))
![](https://img-blog.csdnimg.cn/img_convert/9442759c473b453497a70b02ebae8fa0.png)
代码解析:
1、实例中我们对两个不同数据类型的变量 num_int 和 num_flo 进行相加运算,并存储在变量 num_new 中。
2、然后查看三个变量的数据类型。
3、在输出结果中,我们看到 num_int 是 整型(integer) , num_flo 是 浮点型(float)。
4、同样,新的变量 num_new 是 浮点型(float),这是因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。
我们再看一个实例,整型数据与字符串类型的数据进行相加:
num_int = 123
num_str = "456"
print("num_int的类型:",type(num_int))
print("num_str的类型:",type(num_str))
print(num_int+num_str)
![](https://img-blog.csdnimg.cn/img_convert/0f6ee823a09d402bbf100cb8007ebcc0.png)
从输出中可以看出,整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换。
但是,Python 为这些类型的情况提供了一种解决方案,称为显式转换。
显式类型转换
在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。
int() 强制转换为整型:
x = int(1) # x 输出结果为 1
y = int(2.8) # y 输出结果为 2
z = int("3") # z 输出结果为 3
print(x,y,z)
float() 强制转换为浮点型:
x = float(1) # x 输出结果为 1.0
y = float(2.8) # y 输出结果为 2.8
z = float("3") # z 输出结果为 3.0
w = float("4.2") # w 输出结果为 4.2
str() 强制转换为字符串类型:
x = str("s1") # x 输出结果为 's1'
y = str(2) # y 输出结果为 '2'
z = str(3.0) # z 输出结果为 '3.0'
整型和字符串类型进行运算,就可以用强制类型转换来完成:
num_int = 123
num_str = "456"
print("num_int 数据类型为:",type(num_int))
print("类型转换前,num_str 数据类型为:",type(num_str))
num_str = int(num_str) # 强制转换为整型
print("类型转换后,num_str 数据类型为:",type(num_str))
num_sum = num_int + num_str
print("num_int 与 num_str 相加结果为:",num_sum)
print("sum 数据类型为:",type(num_sum))
![](https://img-blog.csdnimg.cn/img_convert/28509c07b470445d9f7cbf5004730869.png)
常用数据类型转换函数
函 数 | 作 用 |
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 转换为一个八进制的字符串 |
转换int整型,必须是数字,可以有引号也可以没有;
转换str字符串,必须用引号括起来;
转换bool,结果只有True/False;
转换float,必须是数字
print(int("123"))
print(int('123'))
print(int(1234))
print()
print(float(1))
print(float(1.0))
print()
print(bool(1))
print(bool(True))
print(bool(False))
print(bool(""))
print(bool(0)) #当bool函数里的对象为空字符串,空元组,空列表,空字典和 0 时结果为False,其他时候均为True
print()
print(str("你好"))
print(str('你好'))
print()
print(float(1))
print(float("123"))
![](https://img-blog.csdnimg.cn/img_convert/a006170d043e4d13b49d8bd48a69db23.png)
7、变量
country = "中国"
address = "我爱"+ country
print(address)
age = 18
print(age)
flag = 1 < 18
print(flag)
a = b = c = 1
print(a,b,c)
a,b,c = "A",2,3
print(a,b,c)
![](https://img-blog.csdnimg.cn/img_convert/7d9f05bbd62d4917a2c91ed92d5fc018.png)
变量名的命名规则
1、变量名只能有字母,数字,下划线组成
2、数字不能开头
3、不能使用python关键字
最好见名知意,写成驼峰体(例如 MyPython)
(下图是常见的关键字)
![](https://img-blog.csdnimg.cn/img_convert/94f6066f83ad45158d693bd1bafcef26.png)
8、注释
在 Python3 中,注释不会影响程序的执行,但是会使代码更易于阅读和理解。
Python 中的注释有单行注释和多行注释。
Python 中单行注释以 # 开头,例如:
单行注释 以#开头, pycharm快捷操作 CTRl+/
多行注释 一般用三个单引号或者三个双引
#人生若只如初见
'''
我本将心向明月
奈何明月照沟渠
'''
"""
云想衣裳花想容
春风拂槛露华浓
"""
10、函数input()
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
a = input("input:")
print(type(a))
如下图所示:不管你输入的是什么它的数据类型都是str
![](https://img-blog.csdnimg.cn/img_convert/2e27f2f103e94220b58d8b92820c7f27.png)
![](https://img-blog.csdnimg.cn/img_convert/c9ac24a405e24213bd07bb578c3fa361.png)
![](https://img-blog.csdnimg.cn/img_convert/74c36a7ea0724934ad905d6bbf814e3b.png)