python基础

认识计算机

程序:指挥计算机工作的指令序列。

计算机如何处理程序?

按照冯·诺依曼存储程序的原理,计算机的工作流程大致如下:

1. 用户打开程序,程序开始执行;

2. 操作系统将程序内容和相关数据送入计算机的内存;

3. CPU根据程序内容从内存中读取指令;

4. CPU分析、处理指令,并为取下一条指令做准备;

5. 取下一条指令并分析、处理,如此重复操作,直至执行完程序中全部指令,最后将计算的结果放入指令指定的存储器地址中。

计算机语言三代

机器语言——计算机最早的语言形式,直接使用二进制代码表示,由0和1组成的序列构成,计算机能够直接识别和执行这些指令。

优点:计算机直接识别并处理,运行速度最快。

缺点:非常底层且难以理解和记忆。

        ‌汇编语言‌——使用助记符来表示机器指令,这些助记符更接近人类语言,使得编程变得更加直观和易于理解。

优点:一定程度上解决了机器语言的缺点。

缺点:低级语言编写效率低,依赖于硬件。

        ‌高级语言‌是——使用人类日常语言编写。

优点:易于理解与阅读,不依赖于硬件可以执行高,开发效率高。

缺点:执行速度最慢,占用空间多。

高级语言分类

        按实现方式‌:分为编译型语言和解释型语言。

编译型语言如C、C++,需要先将源代码编译成机器码再执行,开发效率低,执行效率高。

解释型语言如Python、JavaScript,则在运行时由解释器逐行解释执行,开发效率高,执行效率低。

        按编程方式‌:可以分为面向对象语言、面向过程(函数式)语言等。

面向对象语言如Java、C++,支持封装、继承和多态等概念;

面向过程(函数式)语言如C,以函数为主要构成单元,强调无副作用和不可变性。

 

一、进制

1.1、什么是进制

人在日常生活中使用十个手指进行计数【十进制】,比较方便;计算机为了方便,使用二进制来进行计数,因为二进制只有0和1,,计算方便,逻辑电路易于实现。

进制:人为规定的符合某种规则的计数方式。

X进制的规则是:逢X进一,借一当X

生活中有哪些进制?十进制、十二进制、七进制、六十进制

计算机中有哪些进制?二进制、八进制、十六进制

1.2、进制的三要素

进制数码基数位权
二进制0 ,12……2^2,2^1,2^0,2^-1,2^-2……
八进制0,1,2,3,4,5,6,78……8^2,8^1,8^0,8^-1,8^-2……
十进制0,1,2,3,4,5,6,7,8,910

……10^2 10^1 10^0 10^-1 10^-2……

十六进制0~9,a~f16

……16^2 16^1 16^0 16^-1 16^-2……

1.3、进制表示方式

        进制分为前缀法和后缀法

进制前缀法后缀法
二进制

0b1234[错误]         0b1001

1001B

八进制

0o1234 0O234              0678[错误]

1234O

(这个是字母“O”不是数字0)

十进制12341234D
十六进制

0x1234 0X1234

1234H 12BDH

1.4、进制转换 

1.4.1 十进制转N进制

        方法1:除N取余、逆向排列

        方法2:位权展开相减法

1.4.2 N进制转十进制

        方法:位权展开相加

1.4.3 二进制与八进制转换

        二进制转八进制:三合一

        八进制转二进制:一拆三

eg:

  0b 011 011 011 = 666

  0565 = 000 010 011 010

1.4.4、二进制与十六进制进行转换

        二进制转十六进制:四合一

        十六进制转二进制:一拆四

eg:

0b  0011 1000 0010 1111 = 0X 382F

0x abc =1010 1011 1100

二、数据存储

        计算机的简易工作流程:通过输入设备输入数据到计算机,CPU接收指令对数据进行处理,在这个过程中产生的临时数据或过程缓存到内存,最后将结果通过输出设备进行显示

 数据:能被计算机识别并处理的符号集合。

数据类型:1,3.14159……,-12

非数值型数据:a,http, 图片 音频 视频…

以单字符为例:

        Ascll码

数据型数据再分类:

有符号数:区分正负

无符号数:不区分正负 添加关键字unsigned去区分

2.1、有符号数【0,1】

以八位二进制为例,看一下有符号数的最大值和最小值:

1286432168421
正01111111
负11111111

最大值+127,最小值-127,但是因为0不区分正负,所以用-128来表示-0,那么

取值范围就是[ - 128,+127]

2.2 无符号数

1286432168421
11111111
00000000

不分正负,取值范围是【0,255】

2.3 有符号数的表示方式

计算机在参与运算的时候,都是补码的形式进行的。

注意:正数的原反补码都一样,我们需要考虑的是负数的原码反码补码。

2.3.1 原码

最高位代表符号位,其他位是直接转换而来

2.3.2 反码

最高位代表符号位,其他位对原码按位取反【0变1 1变0】

2.3.3 补码

最高位代表符号位,其他位对反码加1

eg:6-8

6: 原码 反码 补码 0000 0110

-8:

源码:1000 1000

反码:1111  0111

补码:1111  1000

6-8补码运算:

0000 0110

1111 1000

补码:1111 1110

反码:1111 1101

源码:1000 0010  = -2

存储时看数据(正负) 取出时看类型(有无符号)

三、数据类型

3.1 数据类型的作用

基本作用:不同的数据类型占用不同的内存空间,这有助于优化程序的性能和资源利用。

具体作用:再学习

3.2 数据类型的分类

3.3 基本数据类型

内存单位:

最小单位bit 位

基本单位byte 字节

1字节 = 8位二进制 1字节 = 1111 0000

数据存储到内存,是以字节为单位的

还有哪些单位:

1KB = 1024B = 2^10B

1MB = 1024KB

1GB = 1024MB

1TB = 1B

3.3.1数值型 Number

  1. int 整数 正整数、负整数、0【区别:可以处理极大极小数】
  2. float 小数、浮点数、实数 因为小数点可以移动,所以称之为浮点数
  3. complex 复数 由实部和虚部两部分组成 3j 3+4j
  4. bool 布尔值 只有两个值True 和 False【注意:首字母必须大写】
int_a = 13
print(type(int_a))

float_a = 13.14
print(type(float_a))

complex_a = 3 + 4j
print(type(complex_a))

bool_a = True
print(type(bool_a))

3.3.2 字符串 string

字符串就是一系列文本,使用单引号或者双引号括起来,同时可以使用 \ 进行转义字符的处理。

注意:

单引号和双引号只是字符串的标志,不是内容。

例如:"hello",这里面包含5个字符 h e l l o。

若想把单引号 双引号当作内容,如何处理呢?

使用转义字符,因为解释器、浏览器、编译器有时候不解析某些特殊符号,我们就需要使用 \ 对这些特殊符号进行转义说明。

\'单引号
\"双引号
\ttab制表符位
\n回车符
\a \b \r \\等等
s = "I'm ok"
print(s)

# s = 'I'm ok'
# s = " you are "ok" "
双引号中可以包含单引号
单引号中可以包含双引号
单引号中不能包含单引号
双引号中不能包含双引号

s = 'I\'m ok'
print(s)

s = "you are \"ok\""
print(s)

print("\t缩进点\n换一行下来")

3.3.3 列表 list

一组数据放在 [] 里面,元素之间使用逗号隔开

list_a = [1,2,3,4,5]
print(type(list_a))
print(list_a)

3.3.4 元组 tuple

一组数据放在 () 里面,元素之间使用逗号隔开

tuple_a = (1,2,3,4,5)
print(type(tuple_a))
print(tuple_a)

3.3.5 字典 dict

是一种映射类型,可以进行索引查看,由键值对组成

放在{}里面,键值对用:相连,多个键值对用逗号分割

dict_a = {'人字旁':('们', '亿'), '双人旁':('徐', '行')}
print(type(dict_a))
print(dict_a)

3.3.6 集合 set

一组数据放在 {} 里面,元素之间使用逗号隔开

set_a = {1, 2, 3, 4, 5}
print(type(set_a))
print(set_a)

四、变量

python中的变量,不需要声明数据类型,根据所赋的值确定类型

变量:在程序运行过程中可以修改的量

变量定义的语法格式:变量名 = 赋值/数据

变量的数据类型:数值Number 字符串String 列表List 元组Tuple 集合Set 字典Dict

变量三要素:
id内存地址
value
type类型

a = 1
print(id(a))
print(a)
print(type(a))
"""
140720442894776
1
<class 'int'>
"""

4.1 标识符

用于给变量、函数、对象、等命名的符号

命名规范:

1 由字母,数字,下划线组成,严格区分大小写

2 不能以数字开头

3 不能包含关键字

4 建议使用驼峰命名法、连字符法,见名识意

驼峰命名法:MyFunName

连字符法:my_name

4.2 关键字

python中预先保留的一些具有特殊含义的单词,不能作为标识符。

关键字有这些特征:

预定义:python内置,无需外部导入

不可变:不可以重新定义或者修改

# 使用关键字import导入外部的keyword关键字库
import keyword
# 调用kwlist显示所有的关键字
print(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']
"""
print(len(keyword.kwlist))#35 一共有35个关键字

#调用iskeyword判断你的设置的标识符是不是关键字
print(keyword.iskelist("for")) #true

五、运算符

5.1基本运算符

算术运算符

加 +

减 -

乘 *

除 /

商 //

余(模运算) %

乘方 **

混合运算时,遵循优先级

** 高于 * / // % 高于 + -

若记不住,直接加()

比较运算符

大于>

小于

等于 ==

大于等于 >=

小于等于

不等于 !=

比较运算符的比较结果是布尔值,两个值 True 和 False

逻辑运算符

逻辑与 and

逻辑或 or

逻辑非 not

逻辑与:全真为真、遇假则假

逻辑或:全假为假、有真即真

逻辑非:非真即假、非假即真

逻辑运算的结果是布尔值,有两个:True 和 False

位运算符(二进制)

位与 &

1&0=0        0&1=0        0&0=0        1&1=1

全1为1 有0则0

位或 |

1|0=1        0|1=1        0|0=0        1|1=1

有1则1 全0则0

异或 ^

1^0=1        0^1=1        1^1=0        0^0=0

异或 相同为0 不同为1

取反 ~

~1=0        ~0=1

左移 <<110110<<2 = 0110 00
右移 >>110110>>2 = 00 1101

位运算符:先换算成二进制,以【补码】形式参与运算
    print(25 & 13) 
    print(3 & -3)
    print(3 | -3)
    print(~(-3))
    print(3 ^ -3)
    print(3 << 1)
    print(3 >> 1)
    print(-3 << 2)
    print(-3 >> 2)
注意:
    对于左移来说,低位补0
    对于右移来说,正数高位补0,负数高位补1
问:
1. 0x10 | 0x01 = ? 十六进制的结果是多少? 
2. 0x10 & 0x01 = ? 十六进制的结果是多少? 
3. 12 & 0o12 的十进制结果是:( ) 

5.2 运算符的优先级

()

圆括号内的表达式拥有最高优先级

**

乘方运算

*、/、%、//

算术运算符,先乘除

+、-

算数运算符,后加减

>

位运算符的左移与右移

&

位运算符的按位与

^

位运算符的按位异或

|

位运算符的按位或

> 、=、

比较运算符

and、or

逻辑运算符

=、+=等

赋值运算符优先级最低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值