(1)软件定义
定义:是指有一系列按照特定顺序组织的计算机数据与指令的集合。
程序 = 数据 + 指令
程序 = 数据结构 + 算法
软件的分类:
(2)软件的开发流程
从生到死,都经历了哪些环节
(3)编程语言
100101010101010111111010101010101
人看不懂 但是机器能看懂3,4 add result
,人能够看懂,前提是必须对计算机的运行流程要深入了解3+4
,人完全能看懂,但是机器看不懂了计算机系统:
程序 = 数据 + 指令
(1)数值型
整数(int):用于表示整数,注意一点Python中int数据可以存储任意大小整数,不会像其他语言(C\C++ Java)会存在整型溢出的问题
>>> print(1010101010101010101118923986192673987123 + 1)
1010101010101010101118923986192673987124
>>> print(12)
12
>>> print(0b1011) # 二进制
11
>>> print(0o123) # 八进制
83
>>> print(0x1A2B3C) # 十六进制
1715004
浮点数(float):用于表述小数,浮点数存在科学计数法,由于小数实际上用二进制存储的,可能会存在误差(如果要进行非常精确的小数运算时,浮点数就不适用)
>>> print(3.14)
3.14
>>> print(3.14e10)
31400000000.0
>>> print(3.14e-5)
3.14e-05
>>> print(3.14e-3)
0.00314
复数:由实部和虚部构成数字,a + bj
>>> 3 + 1j
(3+1j)
>>> 1 + 2j
(1+2j)
>>> (3 + 2j) * (2 - 3j)
(12-5j)
(2)布尔类型(bool)
只有两个值 True
和False
,常用于逻辑判断。Python中 True
表示真,False
表示假,但是从实际而言,就是用1和0来表示的。
>>> print(True + 1)
2
>>> print(False - 1)
-1
(3)字符串类型(str)
字符串是由零个或多个字符组成的不可变序列,可以使用单引号、双引号、三单引号、三双引号表示字符串。
字符串主要表现的是文本数据。
>>> print("123")
123
>>> print("123 + 123")
123 + 123
>>> print('''Hello'''')
File "" , line 1
print('''Hello'''') # 非法结束符错误
^
SyntaxError: unterminated string literal (detected at line 1)
>>> print('''Hello''')
Hello
>>> print("""Hello""")
Hello
>>> print('Hello') # 单引号在C\C++ Java 表示字符数据 在Python一律当成字符串来处理
Hello
>>> print("") # 空串 没有字符的字符串
(4)空置类型
None
是Python中一个特殊值,表示空或者无意义。
>>> print(None)
None
>>> None + 1
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
(1)变量的定义与赋值
变量,表示程序中临时存储数据的容器
在Python,变量是不需要声明类型的,直接赋值即就是创建变量,赋值用=
表示,把=
右边的结果赋值给左边
>>> age = 25 # int age = 25
>>> name = "张三" # 是第一次出现 创建变量
>>> name = "李四" # name已经有了 修改变量
>>> name
'李四'
(2)变量命名规则,标识符
就是给程序当中某些数据进行命名,自定义名称
(3)关键字
在Python语法当中,已经给一些单词赋予了特殊的含义,我们就不能随意使用了
以下是Python所有的关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
>>> True = 3.14
File "" , line 1
True = 3.14
^^^^
SyntaxError: cannot assign to True
>>> if = 1
File "" , line 1
if = 1
^
SyntaxError: invalid syntax
(4)标识符的命名规范
my_age
last_time
first_run()
# 小驼峰写法 除了第一个单词首字母小写外 其他单词首字母都大写
myAge
lastTime
firstRun
MyAge
YourBoyFriend
MAX_VALUE
SUM_OF_ARR
(5)内置函数名称也不要随便乱用
Python当中的变量由于没有类型的约束,所以存啥都可以,甚至是函数\类\对象
把内置函数的名称当成一个变量看待就行了
>>> print(1 + 2)
3
>>> num = print
>>> print = 1
>>> print + 1
2
>>> num(1 + 2)
3
(6)数据类型
可以使用内置函数type()
来去查看变量或数据的类型
>>> type(1)
<class 'int'>
>>> num = 1
>>> type(num)
<class 'int'>
>>> num = 3.14
>>> type(num)
<class 'float'>
>>> num = "Hello"
>>> type(num)
<class 'str'>
>>> num = True
>>> type(num)
<class 'bool'>
>>> num = 3 + 1j
>>> type(num)
<class 'complex'>
>>> num = None
>>> type(num)
<class 'NoneType'>
Python中的变量赋值是动态的,虽然很灵活,但是你得注意变量的运算
>>> num = 1
>>> num + 1
2
>>> num = "Hello"
>>> num + 1
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: can only concatenate str (not "int") to str
(8)变量的多重赋值与交换
可以同时给多个变量进行赋值,也可以进行快速变量交换的问题
>>> a,b,c = 1,2,3 # 多重赋值
>>> a
1
>>> b
2
>>> c
3
>>> a = b = c = 3 # 链式赋值
>>> a
3
>>> b
3
>>> c
3
>>> a = 3
>>> b = 10
>>> temp = a
>>> a = b
>>> b = temp
>>> a
10
>>> b
3
>>> a,b = b,a
>>> a
3
>>> b
10
在Python中,数据类型转换主要有两种,隐式转换,显式转换
(1)隐式转换
Python会在某些运算中自动进行数据类型转换,以保证运算的顺利进行,通常是将低精度的类型转为高精度的类型
>>> num = 1
>>> type(num)
<class 'int'>
>>> num = num + 3.14
>>> num
4.140000000000001
>>> type(num)
<class 'float'>
(2)显示转换
使用内置函数来操作
>>> num = 3.9
>>> int(3.9) # 将小数转为整数 直接砍掉小数部分
3
>>> num = "123"
>>> int(num) + 1 # 将数字字符串转为小数
124
>>> num = "123abc"
>>> int(num)
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: invalid literal for int() with base 10: '123abc'
>>> int("1011",2) # 2指定字符串为二进制数字字符串来进行解析 -> 十进制
11
>>> int("123",4)
27
>>> int("1234",3) # 3和4 不属于三进制范围(0~2)
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: invalid literal for int() with base 3: '1234'
>>> int("jahsgdjkhvasaz123g213",36)
257879087050173629504097140435271
>>> int("jahsgdjkhvasaz123g213",36)
257879087050173629504097140435271
最小二进制,最大三十六
>>> int("00000",1)
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0 (默认十进制)
>>> num = 1
>>> num = num + 0.0
>>> num
1.0
>>> num = 1
>>> float(num) # 整数转小数 加小数点.0
1.0
>>> num = "3.14"
>>> float(num) # 小数字符串转小数
3.14
>>> float(num,2) # 不支持指定进制
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: float expected at most 1 argument, got 2
任意数据加str()函数一套即可
>>> num = 1
>>> str(num)
'1'
>>> num = 3.14
>>> str(num)
'3.14'
>>> num = True
>>> str(num)
'True'
以下数据转为布尔类型时为 False:0
、0.0
、None
、""
其他均为 True
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
(1)十进制 转 二进制
将131转二进制
131 ÷ 2 = 65 mod 1
65 ÷ 2 = 32 mod 1
32 ÷ 2 = 16 mod 0
16 ÷ 2 = 8 mod 0
8 ÷ 2 = 4 mod 0
4 ÷ 2 = 2 mod 0
2 ÷ 2 = 1 mod 0
1 ÷ 2 = 0 mod 1
二进制为 10000011
(2)二进制 转 十进制
将 10000011 转 十进制
1 × 20 + 1 × 21 + 0 × 22 + 0 × 23 + 0 × 24 + 0 × 25 + 0 × 26 + 1 × 27
1 + 2 + 128 = 131
(3)二进制特点规律
二进制 | 十进制 |
---|---|
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1010 | 2 + 8 = 10 |
一个二进制为 为bit 比特 表示两种数据 0 、1
8个bit 的二进制 10101101 为 1字节 byte (1b)
1kb = 1024b
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
(1)十进制 转 八进制
将 131 转 八进制
131 ÷ 8 = 16 mod 3
16 ÷ 8 = 2 mod 0
2 ÷ 8 = 0 mod 2
八进制为 203
(2)八进制 转 十进制
将八进制 203 转十进制
3 × 80 + 0 × 81 + 2 × 82
3 + 128 = 131
十进制 131
0~9 A~F
(1)十进制 转 十六进制
444 ÷ 16 = 27 mod 12 (C)
27 ÷ 16 = 1 mod 11 (B)
1 ÷ 16 = 0 mod 1
十六进制为 1BC
(2)十六进制 转 十进制
十六进制的 1BC 转 十进制
12 × 160 + 11 × 161 + 1 × 162
12 + 176 + 256 = 444
十进制为 444
(1)通用思路
有一个 五进制 1024 转 七进制 以十进制为桥梁
五进制 转 十进制
4 × 50 + 2 × 51 + 0 × 52 + 1 × 53
4 + 10 + 125 = 139
十进制 转 七进制
139 ÷ 7 = 19 mod 6
19 ÷ 7 = 2 mod 5
2 ÷ 7 = 0 mod 2
七进制为 256
(2)特殊情况
如果是二进制、四进制、八进制、十六进制 之间相互转换的化
二进制 10101101 转 四进制 10-10-11-01 = 2231 反之亦然
二进制 10101101 转 八进制 010-101-101 = 255 反之亦然
二进制 10101101 转 十六进制 1010-1101 = AD 反之亦然
(1)bin()函数
转二进制
num = 10
print(bin(num))
# 0b1010 字符串形式
(2)oct()函数
转八进制
num = 10
print(oct(num))
# 0o12 字符串形式
(3)hex()函数
转十六进制
num = 10
print(hex(num))
# 0xa 字符串形式