Python基础知识---数据与变量、进制转换

1.1 软件开发概述

(1)软件定义

定义:是指有一系列按照特定顺序组织的计算机数据指令的集合。

程序 = 数据 + 指令

程序 = 数据结构 + 算法

软件的分类:

  • 系统软件:主要负责管理操作计算机底层的硬件,为用户提供一个操作的界面,为用户提供最基本的计算机功能
    • Windows
    • Linux
    • MAC
    • Android
    • IOS
    • HarmonyOS
  • 应用软件:主要负责处理某一特殊领域功能的软件:微信、陌陌、Soul、网易云音乐、支付宝、Office、数据库

(2)软件的开发流程

从生到死,都经历了哪些环节

  • 软件需求:产品经理
  • 系统设计:架构师
  • 编码测试:前端开发、后端开发、移动端开发,测试:找茬。
  • 上线运行:云原生、网络安全
  • 下线

(3)编程语言

  • 纯二进制 100101010101010111111010101010101 人看不懂 但是机器能看懂
  • 汇编语言 3,4 add result,人能够看懂,前提是必须对计算机的运行流程要深入了解
  • 高级编程语言:C、Java、Python 3+4,人完全能看懂,但是机器看不懂了

1.2 计算机组成简介

计算机系统:

  • 硬件
    • 主机:CPU、GPU、内存
    • 外部设备
      • 输入设备:鼠标、键盘、扫面议、麦克风
      • 输出设备:屏幕、打印机、扬声器
      • 存储设备:硬盘、U盘
      • 网络设备:有线网卡、无线网卡
  • 软件
    • 系统软件
    • 应用软件

程序 = 数据 + 指令

2.1 内置基本数据类型

(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)

只有两个值 TrueFalse,常用于逻辑判断。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'

2.2 变量与数据类型

(1)变量的定义与赋值

变量,表示程序中临时存储数据的容器

在Python,变量是不需要声明类型的,直接赋值即就是创建变量,赋值用=表示,把=右边的结果赋值给左边

>>> age = 25 # int age = 25
>>> name = "张三"	# 是第一次出现 创建变量
>>> name = "李四" # name已经有了 修改变量
>>> name
'李四'

(2)变量命名规则,标识符

就是给程序当中某些数据进行命名,自定义名称

  • 变量名只能包含字母、数字、下划线,且不能以数字开头
  • 变量名是区分大小写的,age、Age,AGE其实三个变量
  • 不能使用Python的关键字作为变量名

(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

2.3 基本数据类型转换

在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:00.0None""

其他均为 True

>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True

3.1 十进制与二进制互转

(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

3.2 十进制与八进制互转

(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

3.3 十进制与十六进制互转

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

3.4 N进制与M进制互转

(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 反之亦然

3.5 进制转换内置函数

(1)bin()函数

转二进制

num = 10
print(bin(num))
# 0b1010 字符串形式

(2)oct()函数

转八进制

num = 10
print(oct(num))
# 0o12 字符串形式

(3)hex()函数

转十六进制

num = 10
print(hex(num))
# 0xa 字符串形式

你可能感兴趣的:(python,开发语言)