linux_day01回顾:
计算组成:
硬件
CPU
内存
主板(总线设备)
外部存储设备
软件:
操作系统软件
应用软件
三大操作系统:
Windows
Linux(Ubuntu, Android)
UNIX(IOS, Mac OS X, AIX)
终端:
命令:
exit 退出终端(退出登陆)
文件和目录相关命令:
ls 列出文件
pwd 显示当前文件夹(工作目录)
cd 切换文件夹(工作目录)
mkdir 创建文件夹
rmdir 删除空文件夹
touch 创建文件(更新文件的修改时间)
rm 删除文件或文件夹 rm -rf
cp 复制文件或文件夹 cp -a xxxx
mv 移动文件夹或更名
find 根据文件名来查找文件位置
grep 列表文件内容信息(根据内容来搜索文件)
文件管理的命令:
gzip 压缩
gunzip 解压
tar 打包
-czvf xxx.tar.gz xxx/
解包:
-xzvf xxx.tar.gz
权限操作命令:
sudo 命令 选项 参数
sudo -i 进入到 root 用户
通配符:
* ?
路径:
绝对路径
/home/tarena/aid1808/pbase/day01/day01
C:\Windows\System32
相对路径
.txt
../day01/day01.txt
./day01.txt
day01.txt
~/aid1808/pbase/day01/day01.txt
day01 笔记
<< Python语言 编程基础 >>
python简介
诞生
创建人: Guido Van Rossum
时间: 1989
python应用领域
系统运维
网络编程
科学计算
人工智能,机器人
web开发
云计算
大数据及数据库编程
教育
游戏,图像等
Python的优缺点:
优点:
面向对象(Java, C++, Python, C#, Swift)
免费
可移植(Windows/Linux/Unix)
可混合编程(C/C++/Java/.net)
简单易学易用
开发效率高
应用领域广泛
开源
缺点:
与C/C++相比,执行速度不够快
不能封闭源代码
python 的官网
https://www.python.org
python的版本:
Python V2.7 (2020年结束维护)
Python V3.5 (当前教学版本)
Python V3.8 (最新)
下载地址:
http://www.python.org/getit
python的安装:
可以安装在Linux/Unix/Windows下
python 的运行
python的解释执行器的类型
CPython (C语言开发)
Jython (Java开发)
IronPython(.net开发)
第一个Python程序
Visual Studio Code使用
编写 hello.py
写入(左侧不能加空格):
print("hello world!")
执行程序 :
在终端内:
$ python3 文件路径名.py
python文件的后缀
.py 为python语言后缀
.c C语言文件后缀
.cpp/.cxx/.cc/.C C++语言后缀
.java Java语言后缀
在python的交互模式下编写并执行代码
进入交互模式:
$ python3 <回车>
退出交互模式:
>>> quit() <回车>
>>> exit() <回车>
>>> <输入ctrl + d>
python的注释:
以 # 开头直至行尾
作用:
让注释内容不参加解释执行
vs code 中注释的快捷键: ctrl + /
python 程序的组成:
程序由模块组成
模块由语句,函数,类等组成
语句包含表达式
表达式建立并创建数据对象
Python的核心数据类型:
数字(整数,浮点型数, 复数,布尔型数(bool))
字符串 str(存储文字信息)
列表等(存储数据)
#注意区别java的基本数据类型(不含复数,字符串,列表等)
整型数 int
整型数是不带小数部分的数字,包括自然数和负数自然数
如: -5, 100, 0等
整型数的字面值的表示方式:
十进制表示
如:
10
200
9999999999999999
-100
0
八进制方式表示(0o开头,后跟0~7)
如:
0o177 (127)
0o11 (9)
十六进制方式表示(0x开头,后跟0~9,A-F,a-f)
如:
0x11 # (17)
0xFF # (255)
0x0a # 10
0x1a2b3c4d
二进制表示方式(0b开头,后跟 0~1)
如:
0b0000 # 0
0b0001 # 1
0b0010 # 2
0b01001000 # 72
进制转换:
十进制: 逢十进一
二进制: 逢二进一
......
练习:
计算以下数字表示多少 ?
0xFF # 255
0b11111111 # 255
0xFFFF # 65535
0xFFFFFFFF # 4294967295 约42亿
0b111 # 7
0o11 # 9
浮点型数 float
浮点数是带有小数部分的数字(小数部分可以为0)
#区别java,java除法之后是整型,而python中整除之后是浮点型
浮点数字面值的表示方式:
小数表示:
如:
3.14 3.1 3. 0.14 .14
科学计数法:
格式:
小数 e/E 正负号 指数
如:
6.18E-1 # 等同于0.618
2.9979e8 # 等同于299790000.0
复数的表示方式: complex
分为两部分:
实部(real)
虚部(image), 虚部以 J 或 j结尾的数
如:
1j
1+2j
-2j
(-100+200j)
注: 虚部以 J 或 j结尾的数
布尔型数 bool (boolean)
用来表示真和假两种状态的类型
True 表示真(条件满足或成立)
False 表示假(条件不满足或不成立)
说明:
True 的值为1
False 的值为0
#注意:布尔类型也是数值类型!!!!
空值 None
None是一个表示不存在的特殊对象
作用:
1.用来占位
2.变量解除绑定
表达式和运算符(也叫操作符)
表达式 expression
由一个数字 或 数字和运算符组成
作用:
让计算机做事情并返回结果(一定会返回结果)
示例:
1
1 + 2 # 返回一个3(创建或生成一个3)
算术运算符:
+ 加法
- 减法
* 乘法
/ 除法
// 地板除
% 求余
** 幂运算
/ 除法
除法得到的数是浮点数,不会丢弃小数部分
如:
1 / 3 得 0.333333333333333
8 / 2 得 4.0
// 地板除 floordiv
除的结果去掉小数部分向下取整
如:
7 / 3 得 2.33333333333333
7 // 3 得 2
8 // 3 得 2
3.25 // 1.5 # 得 2.0
% 求余
7 % 3 得 1
3.25 % 1.5 得 0.25
** 幂运算
x ** y 表示 x 的 y次方
如:
4 ** 2 # 得 16
3.0 ** 4.0 # 得 81.0
5.6 ** 1.418 # 11.506165654866916
练习:
一个商店卖西瓜 7元一个,你带20元能买几个西瓜,找零多少?
答案:
20 // 7 # 得 2.0个西瓜
20 % 7 # 得 6 元钱
运算符的优先级:
**
* / % //
+ -
示例:
1 + 3 * 3 ** 2 + 4 // 2
1 + 3 * 9 + 4 // 2
1 + 27 + 4 // 2
1 + 27 + 2
28 + 2
30
括号分组子表达式
用() 可以将表达式分组,()内部的表达式先进行计算
混合类型自动升级
1 +2.14 返回类型为浮点数 3.14
基本输出函数 print
格式:
print(要打印的东西)
注: 多个数据用英文逗号(,)分隔
python不能换行打印吗?
练习:
1. 写程序在终端输出图形:
********
* *
* *
********
2. 一个学生毕业薪资是10000元, 每年涨20%,问十年后它的薪资是多少? (要求打印出来)
变量
什么是变量
变量是关联一个对象的标识符
变量可以绑定一个对象,并可能通过变量名来使用这个对象
标识符的命名方法
标识符必须为字母或下划线开头,后跟字母或下划线或数字(注意,不能以字母开头)
不能使用python的关键字
变量名区分大小写
合法的变量名示例:
a a1 a100 bbbbb hello _abc var A1B2
a_b_c
不合法的变量名示例:
1a 123 $abc +a #abc True
python的关键字不能作为变量名:
True, False, None, is, del, if, while
for ....
查看python中的关键字
>>> 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']
赋值语句
语法:
变量名 = 表达式
# 或
变量名1 = 变量名2 = 变量名3 = 表达式
# 或
变量名1, 变量名2, ... = 数值1, 数值2,...
作用:
创建一个变量或修改一个变量绑定的数据
说明:
1. 当变量不存在时,创建该变量,同时将变量绑定在表达式返回的对象上
2. 当变量存在时,改变此变量绑定的对象
3. 一个变量只能绑定一个对象
4. 两个变量可以同时绑定在同一个对象上
示例:
pi = 3.1415926
a = 10
b = a # a和b 同时绑定在一个10上
练习:
指定一个半径r为3厘米的圆
1. 计算圆的周长是多少? (2*pi*r)
2. 计算圆的面积是多少? (pi * r ** 2)
(尝试使用变量)
python 中关联, 绑定,引用的含义
在python中,变量是没有类型
关联,绑定,引用都是指变量和一个对象的关联关系
示例:
a = 10 + 20
a = b = c = 100 # a,b,c三个变量同时绑定在100上
a, b, c = 100, 200, 300 # 序列赋值
序列赋值的语法:
变量名1, 变量名2, ... = 对象1, 对象2, ...
变量名1, 变量名2, ... = [对象1, 对象2,...]
变量名1, 变量名2, ... = (对象1, 对象2,...)
python中自动化内存管理
a = 1000
b = 2000
a = a + b # 释放1000这个对象,a重新绑定在3000上
c = a # c同时绑定在3000上
练习:
变量交换练习:
已知有两个变量
a 绑定 10000
b 绑定 20000
问,在不创建 新对象的情况下,如何让a 和 b 交换绑定的对象
a = 10000
b = 20000
# 第一种交换方式
temp = a
a = b
b = temp
# 第二种交换方式
a, b = b, a
序列赋值,java中并没有这种交换对象的方式
在交互模式下,查看当前作用域内的所有变量
>>> help('__main__')
del 语句
作用:
用于删除变量,同时解除与对象的关联关系,如果可能则释放对象
语法:
del 变量名1, 变量名2, ....
自动化内存管理和引用计数
每个对象都会记录有几个变量绑定(引用)自身,当引用数量为0时,则此对象被销毁,此种自动化内存管理的方式叫做引用计数
is / is not 运算符
作用:
判断两个对象是否是同一个对象,当是同一对象时返回True,否则返回False
is常被用来判断对象是否为空 a is None
注:
is not 返回值与is 相反
语法:
x is y
# 或
x is not y
注意:is和==的区别
1.==用于比较对象的值是否相等
2.is用于比较对象的id是否一致(即比较对象的内存地址是否一致)
>>> x = 1000
>>> y = 1000
>>> x is y
False
>>> x==y
True
id(x) 函数:
作用:
返回一个对象在内存的中的地址
如:
a = 10000
b = 10000
print(id(a))
print(id(b))
print(a is b) # True or False?
#这里不一定为true或时false,因为计算机有时候会进行自动优化,节省内存空间
#经过优化,两个10000可能会合并成为一个10000
a=b=10000
a is b
#True
小整数对象池
Python中 整数 -5 至 256 的整数永远存在于小整数对象池中,不会释放并一直可用
复合赋值算术运算符:
运算符 说明
y += x 等同于 y = y + x
y -= x 等同于 y = y - x
y *= x 等同于 y = y * x
y /= x 等同于 y = y / x
y //= x 等同于 y = y // x
y %= x 等同于 y = y % x
y **= x 等同于 y = y ** x
练习:
1. 在终端输出图形:
*
***
*****
*******
2. 中国古代的秤是16两一斤,请问古代的216两是古代的几斤几两?写程序打印出来
3. 从凌晨0:0:0 计时,到现在已经过了63320秒
请问,现在是几时,几分,几秒,写程序打印出来
(提示: 可以用地板除和求余实现)
4. 温度转换
摄氏湿度 = 5.0 / 9.0*(华氏温度-32)
开氏温度 = 摄氏温度 + 273.15
请问:
100华氏温度转为摄氏温度是多少度?
转为开氏温度是多少度?