环境配置
python解释器安装
(1)Python下载
(2)下载完毕后打开进行安装,勾选(all users),然后点击(customize installation)自定义安装
(3)全部默认勾选进行下一步
(4)安装路径,最好是自己创建一个新的路径方便查找,勾选项默认
(5) 安装完成之后,进行环境变量的设置,控制面板 ==》 系统和安全 ==》 系统 ==》 高级系统设置 ==》 环境变量 ==》 在系统变量中找到 path 双击 ==》 新建路径 Python解释器和 script
iDE安装(Pycharm)
(1)PyCharm下载
(2)自定义路径与操作系统选择
正课内容
1.Python的历史和概况
(1)Python的出生和应用
-
Python的诞生
- 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。Guido作为一个语言设计爱好者,已经有过设计语言的尝试。这一次,也不过是一次纯粹的hacking行为。
-
Python的应用
- Web应用开发
- 操作系统管理、服务器运维的自动化脚本
- 科学计算
- 桌面软件
- 服务器软件(网络软件)
- 游戏
- 构思实现,产品早期原型和迭代
(2)Python是什么样的编程语言
- Python是一种面向对象、解释型、动态类型计算机程序设计语言
(3)优缺点
-
优点
-
简单
- Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
-
易学
- 就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
-
免费、开源
- Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
-
可移植性
- 由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行
-
丰富的库
- Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。
-
-
缺点
-
运行速度较慢
- Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。
-
代码不能加密
-
(4)Pyhon的种类
- Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
- Jyhton Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
- IronPython Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
- PyPy(特殊) Python实现的Python,将Python的字节码字节码再编译成机器码。
2.基础
2.1第一条编程语言
print ("Hello,Python!")
print ("To be, or not to be,it's a question.")
print ("TO be, or not to be, it's uo to you.")
print ("Make it!")
print ("以梦为马,不负韶华!")
2.2print()函数
作用:在控制台打印信息
2.3注释
单行注释
# 这是单行注释
- 多行注释
三单引号
三双引号
'''
多行注释1
'''
"""
多行注释2
"""
demo:
print ("Hello,Python!")
print ("To be, or not to be,it's a question.")
print ("TO be, or not to be, it's uo to you.")
print ("Make it!")
print ("以梦为马,不负韶华!")
'''
测试一下三单引号注释;
三双引号省略
'''
2.3input()函数
作用:从外部获取值
用法:括号中可以提供提示信息
返回值为字符串类型
>>> a = input()
城市学院
>>> a
'城市学院'
>>> a = input("please Enter School Info:")
please Enter School Info:City College
>>> a
'City College'
>>> Date = input("please Enter The Date:")
please Enter The Date:2019.07.16
>>> Date
'2019.07.16'
>>>
2.4运行Python程序的三种方式
(1)解释器环境运行
cmd输入python之后
(2)脚本运行
(3)IDE 集成开发环境(Integrated Development Environment )
- pycharm
- sublime
- VS Code
- Atom
2.5Python中常见的数据类型
数据的概念
Python中的数据类型(常见)
-
数字(number)
-
整形(int)
-
浮点型(float)
-
布尔型(bool) true false
-
复数(complex)
-
-
字符串(string)
-
列表(list)
-
元组(tuple)
-
字典(dict)
-
集合(set)
2.6变量和常量
变量
-
概念
-
程序可操作的存储区的名称;
-
程序运行存储区中能够改变的数据;
-
每个变量都有自己的特定的数据类型
-
作用:
- 将数据存储到内存
-
变量的定义
-
命名
规则: -
必须是字母、下划线、数字组合
-
不能以数字开头
-
不可一世Python的关键字
-
注意:
-
见名知意
-
分大小写
-
Python中,单下划线和双下划线开头的变量有特殊的通途,一般不推荐使用
变量定义
-
va1_name = 初始值
拓展:
关键字的查看
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']
>>>
666,错误
City666,正确
_56city,正确
类型测试 type()
type(val_name)
内存地址ID()
id(val_name)
>>> li = {'a','b'}
>>> id(li)
1677184548424
>>> type(li)
<class 'set'>
<class 'tuple'>
>>> x = "abc"
>>> y = "def"
>>> z = x,y
>>> type(z)
<class 'tuple'>
常量
不变的量
pi,3.1415926
通常用大写,如
PI = 3.1415926
举例:
>>> x = "def"
>>> y = "abc"
>>> x
'def'
>>> y
'abc'
>>> x,y = y,x
>>> x
'abc'
>>> y
'def'
>>>
- 变量交换的四种方法
- temp = a
a = b
b = temp - a,b = b,a
- a = a + b
b = a - b
a = a - b - a = a^b
b = a^b
a = a^b
- temp = a
2.7数字
- 整型(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)
不区分长短整型
-
浮点型(float)
-
带小数点的数字
-
布尔型(bool)
- True
- False
-
复数(complex)
-
实部(cpx.real)
-
虚部(cpx.imag)
-
共轭复数(cpx.conjugate())
-
>>> cpx = complex(3,4)
>>> cpx
(3+4j)
>>> cpx.real
3.0
>>> cpx = complex(3,4)
>>> cpx.conjugate()
(3-4j)
>>>
常见的数学函数
函数 | 描述 |
---|---|
abs(x) | 绝对值 |
pow(x,y) | x y x^y xy |
round(x,[n] | 返回四舍五入的值,如果给出n,表明四舍五入后的小数点的位数 |
math.exp(x) | 返回e的x次幂 |
math.fabs(x) | 返回绝对值,类型为浮点数 |
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,...) | 返回最小值` |
2.8表达式与运算符
-
表达式
- 由变量,常量和运算符组成的式子,称为表达式
-
运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
- 成员运算符
- 身份运算符
- 位运算符
Python算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加/拼接 | a+b |
- | 相减/求差集 | a-b |
* | 相乘 | a*b |
/ | 相除 | a/b |
** | 幂运算 | x**y |
% | 取模(余数) | a%b |
// | 取整除(商) | a//b |
拓展
divmod(x,y)
返回:X除以Y的商和余数(以元组的形式)
>>> 23/5 4.6 >>> 2**3 8 >>> 2%3 2 >>> 2//3 0 >>> divmod(23,4) (5, 3) >>>
Python比较运算符
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真 |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真 |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立 |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立 |
Python逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True |
Python赋值运算符
运算符 | 描述 |
---|---|
= | 最简单的赋值运算符。 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 |
^ | 按位"异或",同0非1 |
~ | 按位"取反",~x 得到 -x-1 |
<< | 左移运算符 |
>> | 右移运算符 |
a = 15
b = 31
二进制分别对应
a --> 0000 1111
b --- 0001 1111
a & 0000 1111
a | b 0001 1111
a ^ b 0001 0000
~a -16
a>>2 0000 0011
a<<2 0011 1100
Python成员运算符
测试是否包含某个成员,一般测试字符串、列表、元组
运算符 | 描述 |
---|---|
in | 存在序列中,返回true,否则false |
not in | 不存在序列,返回true,否则false |
demo:
>>> sr = "abc"
>>> "a" in sr
True
>>> "a" not in sr
False
>>>
>>> li = list(sr)
>>> li
['a', 'b', 'c']
>>> "a" in li
True
Python的身份运算符
用于比较两个对象的存储单元
id()
运算符 | 描述 |
---|---|
is | 判断连个标识符是否引用同一个对象 |
not is | 判断连个标识符是否引用同一个对象 |
demo:
>>> a = "ab"
>>> b = "ab"
>>> a is b
True
>>> id(a)
1677184504192
>>> id(b)
1677184504192
2.9数据类型的强制转换
强转类型 | 描述 |
---|---|
int(x,[base]) | 将x强制转化为整型。如果x是字符串们需要制定base基数 |
float(X) | 将x转换为浮点型 |
str(X) | 强转为字符串 |
repr(x) | 将对象转换为表达式字符串 |
list(X) | |
tuple(X) | |
dict(X) | |
set(X) | |
chr(X) | 将整数转换为字符 |
ord(X) | 将字符转换为数值 |
bin(X) | 转换为二进制 |
oct(X) | 专委为八进制 |
hex(X) | 转换为十六进制 |
>>> 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
>>> chr(65)
'A'
>>> ord("城")
22478
>>>
2.10随机函数
导入这个模块
import random
random模块的常见功能
(1)random.random()
- 用来生成一个0-1的随机浮点数[0,1)
import random
# print(dir(random))
for i in range(100):
a = random.random()
print(a,end=" ")
(2)random.uniform(a,b)
- 用来生成指定范围内的浮点数,[a,b]
import random
# print(dir(random))
for i in range(100):
a = random.uniform(6,8)
print(a,end=" ")
(3)random.randint(a,b)
- 用来生成指定范围内的整数,[a,b]
import random
# print(dir(random))
for i in range(100):
a = random.randint(6,10)
print(a,end=" ")
(4)random.randrange([strart],stop,[step])
- 从指定范围内,按指定基数递增或者递减的集合中,随机获取一个整数
import random
for i in range(100):
a = random.randrange(1,16,3)
#1,1+3,1+3*2,...,1+5*3
print(a, end=" ")
(5)random.choice(sequence)
- 从序列中随机获取一个元素,sequnence可以为列表,字符串或元组
import random
for i in range(100):
# a = random.randrange(1,16,3)
b = random.choice(range(1,16,3))
print(b, end=" ")
(6)random.shuffle(x[,random])
- 用来将一个列表的元素打乱
import random
li = ["1","b","c","d","e"]
for i in range(5):
# a = random.randrange(1,16,3)
random.shuffle(li)
print(li, end=" ")
(7)random.sample(sequence,k)
import random
li = ["1","b","c","d","e"]
for i in range(5):
print(random.sample(li,4))
print(li) #li 没有改变序列