文章目录
Python历史状况
1、出生和应用
2、语言类型
- 编译型
源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。 - 解释型
程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用[编译]的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等. - 静态语言
在编写代码时,必须为变量指定一个明确类型的语言。比如Java、C/C++ - 动态语言
在编写代码时,不必为变量指定一个明确的类型,而是由解释器在运行时根据变量的使用情况确定变量的类型。比如python、javascript - 强类型
变量必须有一个确定的类型。比如Java、C/C++、python - 弱类型
- 在运行时,变量不必按它原来的类型使用,可以当做其他类型来使用,比如可以直接将一个字符串当整数,也可以直接将一个整数当做字符串。比如JavaScript
3、优缺点
4、Python种类
python基础
2.1第一条编程语句
print('Hello World')
2.2print()函数
2.3注释
单行注释
- 一个#
多行注释
-
三单引号
-
三双引号
'''
多行注释1
'''
"""
多行注释2
"""
Demo:
print('Hello World')#第一条python程序
'''
让我们开始python之旅
畅行在python之途
'''
2.4 input函数
作用:从外部获取值
用法:括号中可以提供提示信息
####返回值为字符串类型
2.5 运行python程序的三种方式
1、解释器环境运行
2、脚本运行
3、IDE
- pycharm
- subline
- vs Code
- Atom
2.6 python中常见的数据类型
数据的概念
python中的数据类型(常见)
-
数字(number)
-
整型(int)
-
浮点型(float)
-
布尔型(bool)
-
复数(complex)
-
-
字符串(string)
-
列表(list)
-
元组(tuple)
-
字典(dict)
-
集合(set)
2.7变量和常量
变量
-
概念:
- 程序可操作的储存区的名称;
- 程序运行时储存区能够改变的数据;
- 每个变量 都有自己特定的数据类型
-
作用:
-
将数据储存到内存
-
变量的定义
-
命名
规则:
-
必须是字母、下划线、数字组合
-
不能以数字开头
-
不可以是python中的关键字
注意:
见名知意
区分大小写
在python中,单下划线和双下划线开头的变量有特殊的通途,一般不推荐使用单下划线和双下划线开头的变量名称
-
-
-
- 变量定义
val_name = 初始值
拓展
关键字的查看
>>> import keyword >>> keyword.kwlist ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
以下变量名称哪些是正确的,哪些是错误的?
666,错
City666,对
_56city,对
类型测试type()
type(val_name)
内存地址id()
id(val_name)
常量
不变的量
Pi,3.1415926
通常用大写,如
PI = 3.1415926
>>> a,b,c=111,222,333
>>> a
111
>>> b
222
>>> c
333
>>> a= 111
>>> b=222
>>> c=333
>>> x="abc"
>>> y="wer"
>>> z=x,y
>>> type(z)
<type 'tuple'>
互换两元素的值
>>> x=123
>>> y=456
>>> x,y=y,x
>>> x
456
>>> y
123
>>> a=123
>>> b=456
>>> tmp=a
>>> a=b
>>> b=tmp
>>> a
456
>>> b
123
2.8 数字
- 整型(int)
- 32bit,取值范围 − 2 31 − 2 31 − 1 -2^{31} -2^{31}-1 −231−231−1
- 64bit,取值范围 − 2 63 − 2 63 − 1 -2^{63}-2^{63}-1 −263−263−1
以前python区分短整型和长整型,目前,无这些区分
-
浮点型
- 带有小数点的数字
-
布尔型
- Ture
- False
-
复数(complex)
- 实部(cpx.real)
- 虚部(cpx.imag)
- 共轭复数(cpx.conjugate())
常见的数学函数
函数名 | 描述 |
---|---|
abs(x) | 绝对值 |
pow(x,y) | x y x^y xy |
round(x,[n]) | 返回四舍五入的值,如果给出n,表明四舍五入后的小数点的位数 |
math.exp(x) | 返回e的x次幂 |
math.fabs(-6.6) | 返回绝对值,类型为浮点数 |
math.ceil(x) | 返回数字的上入整数 |
math.floor(x) | 返回数字的下舍整数 |
math.log(x,[y]) | 单参数,默认以e为底;双参数,以[y]为底 |
math.modf(x) | 返回浮点数的小数部分和整数部分 |
math.sqrt(x) | 平方根 |
m a x ( x 1 , x 2 , … ) max(x_1,x_2,…) max(x1,x2,…) | 返回最大值 |
m i n ( x 1 . x 2 , … ) min(x_1.x_2,…) min(x1.x2,…) | 返回最小值 |
>>> abs(-1)
1
>>> pow(3,2)
9
>>> round(2.3)
2.0
>>> round(2.51)
3.0
>>> round(3.1415926,4)
3.1416
>>> import math
>>> math.exp(1)
2.718281828459045
>>> math.exp(2)
7.38905609893065
>>> math.ceil(4.1)
5.0
>>> math.floor(4.9)
4.0
>>> math.fabs(-6.6)
6.6
>>> math.fabs(-6)
6.0
>>> math.log(math.e)
1.0
>>> math.log(100,10)
2.0
>>> math.modf(3.333)
(0.3330000000000002, 3.0)
>>> math.sqrt(9)
3.0
>>> max(1,2,3)
3
>>> min(1,2,3)
1
>>> dir(math)
['__doc__', '__file__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
2.9 表达式与运算符
-
表达式
- 由变量,常量和运算符组成的式子,成为表达式
-
运算符
- 算数运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
- 成员运算符
- 身份运算符
- 位运算符
Python算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加/拼接 | a+b |
- | 相减/求差集 | a-b |
* | 相乘/重复 | a*b |
/ | 相除 | a/b |
% | 取模(余数) | a&b |
// | 取整数(商) | a//b |
拓展
divmod(x,y)
返回:x除以y得到的商和余数(以元组形式)
>>> 23%4 3 >>> 23//4 5 >>> divmod(23,4) (5, 3)
Python比较运算符
以下假设变量a 为10,变量b为20
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | (a==b)返回False |
!= | 不等于 | (a!=b)返回True |
<> | 不等于 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 | (a > b) 返回 False。 |
< | 小于 | (a < b) 返回 true。 |
>= | 大于等于 | a >= b) 返回 False。 |
<= | 小于等于 | (a <= b) 返回 true。 |
Python赋值运算符
以下假设变量a 为10,变量b为20
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
Python位运算符
按位运算符是把数字看作二进制来算的,常见的位运算符如下:
运算符 | 描述 |
---|---|
& | 按位"与",同为1才为1,否则为0 |
| | 按位"或",有1则为1 |
^ | 按位"异或",不同为1 |
~ | 按位"取反",~x得到-x-1 |
<< | 左移运算符 |
>> | 右移运算符 |
a=15
b=31
二进制分别对应:
a--->00001111
b--->00011111
a&b 00001111
a|b 00011111
a^b 00010000
a>>2 00000011
a<<2 00111100
python成员运算符
测试是否包含某个成员,一般测试字符串,列表,元组
运算符 | 描述 |
---|---|
in | 如果存在指定序列中,返回true,否则,返回False |
not in | 如果不不存在于指定序列中,返回True;否则,返回False |
>>> sr="abc"
>>> "a" in sr
True
>>> "a" not in sr
False
>>>
>>> list = list(sr)
>>> list
['a', 'b', 'c']
>>> "a" in list
True
python身份运算符
用于比较两个对象的储存单元
id()
运算符 | 描述 |
---|---|
is | 判断两个标识符是不是引用自同一个对象 |
Not is | 判断两个标识符是不是引用自不同对象 |
python逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
a=10
b=20
a and b
20a or b
10not a
Falsenot b
False
2.10 数据类型强制转换
强制转换类型 | 描述 |
---|---|
int(x,[base]) | 将x强制转化为整型,如果x是字符串,需要制定base基数 |
float(x) | 将x转换为浮点型 |
str(x) | 强转为字符串 |
repr(x) | 将对象转换为表达式字符串 |
list(x) | 将序列 x 转换为一个列表 |
tuple(x) | 将序列 x转换为一个元组 |
dict(x) | 将序列 x转换为一个字典 |
set(x) | 转换为可变集合 |
chr(x) | 将整数转化为字符 |
ord(x) | 将字符转化为数值 |
bin(x) | 转化为二进制 |
oct(x) | 转化为八进制 |
hex(x) | 转化为十六进制 |
>>> sr="123"
>>> a=12.3
>>> int(a)
12
>>> sr="123"
>>> int(sr)
123
>>> int(sr,8)
83
>>> 8**2+2*8+3
83
>>> int(sr,16)
291
>>> 16**2+2*16+3
291
>>>
2.11 随机函数
导入这个模块
import random
random模块常见功能:
(1)random.random()
-
用来生成一个0-1的随机浮点数[0,1)
import random # print(dir(math)) for i in range(100): a = random.random() print(a, end=" ")
(2)random.uniform(a,b)
- 用来生成指定范围内的浮点数,[a,b]
import random
# print(dir(math))
for i in range(100):
a = random.uniform(6,8)
print(a, end=" ")
(3)random.randint(a,b)
- 用来生成指定范围内的整数,[a,b]
import random
# print(dir(math))
for i in range(100):
a = random.randint(6,10)
print(a, end=" ")
(4)random.randrange([start],stop,[step])
- 从指定范围内,按指定基数递增或者递减的集合中,随机获取一个整数
Random.randrange(1,16,2)
1,3,5,7,9,11,13,15
import random
# print(dir(math))
for i in range(100):
a = random.randrange(1,16,2)
print(a, end=" ")
(5)random.choice(range(sequence))
import random
# print(dir(math))
for i in range(100):
a = random.randrange(1,16,2)
b=random.choice(range(1,16,2))
print(b, end=" ")
(6)random.shuffle(x[,random])
-
用来将一个列表的元素打乱,即将列表的元素随机排列
import random # print(dir(math)) list = ["C ","C++","Java","VB","python","c#"] #sr = "C" for i in range(6): a = random.randrange(1,16,2) random.shuffle(list) print(list)
(7)random.sample(sequence,k)
- 用来从指定序列中随机获取指定长度的片段并随机排列,但不会修改原来序列
import random
# print(dir(math))
list = ["C ","C++","Java","VB","python","c#"]
#sr = "C"
for i in range(6):
print(random.sample(list,4))
import randomprint( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 print( random.random() ) # 产生 0 到 1 之间的随机浮点数print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数print( random.choice('tomorrow') ) # 从序列中随机选取一个元素print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数a=[1,3,5,6,7] # 将序列a中的元素顺序打乱random.shuffle(a)print(a)