最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【天天报资讯】计算机基础 数据类型 流程控制 字符编码 文件操作

来源:博客园


(资料图片)

目录
  • 计算机基础 数据类型 流程控制 字符编码 文件操作
    • 一、关于计算机、编程语言、数据类型、及运算符
      • 1.关于计算机
      • 2.关于进制数
      • 3.关于单位换算
      • 4.计算机五大组成部分
      • 5.计算机三大核心硬件
      • 6.编程与编程语言
      • 7.Python解释器
      • 8.关于变量名
      • 8.关于垃圾回收机制
    • 二、常用的基本数据类型及内置方法
      • 1.八大数据类型概览
      • 2.八大数据类型详细介绍
        • (1)整型相关基本知识
        • (2)整型相关内置方法
        • (1)浮点型相关基本知识
        • (2)浮点型相关内置方法
        • (1)字符串相关基本知识
        • (2)字符串相关内置方法
        • (1)列表相关基本知识
        • (2)列表相关内置方法
        • (1)字典相关基本知识
        • (2)字典相关内置方法
        • (1)布尔值相关基本知识
        • (2)布尔值相关内置方法
        • (1)元组相关基本知识
        • (2)元组相关内置方法
        • (1)集合相关基本知识
        • (2)集合相关内置方法
    • 三、流程控制理论
      • 1.if 分支结构
      • 2.while循环
      • 3.for循环
      • 4.rage方法
    • 四、字符编码理论以及实操
      • 1.字符编码理论部分
      • 2.字符编码实操部分
    • 五、文件操作
      • 1.文件操作理论
      • 2.文件读写模式
      • 3.文件操作模式
      • 4.文件诸多方法
      • 4.文件光标移动
      • 6.文件内容修改

计算机基础 数据类型 流程控制 字符编码 文件操作

一、关于计算机、编程语言、数据类型、及运算符

1.关于计算机

计算机就是我们平时叫的电脑(computer)其实就是"通电的大脑"所以它的工作肯定离不开电 而电信号只有高低电平两种状态(0 and 1)显而易见 计算机只认识数字0和1

2.关于进制数

二进制:0 1八进制:0 1 2 3 4 5 6 7十进制:0 1 2 3 4 5 6 7 8 916进制:0 1 2 3 4 5 6 7 8 9 a b c d e f

3.关于单位换算

比特位(bit) 1 bit8 bit = 1 bytes(字节)1024bytes = 1KB1024KB = 1MB1024MB = 1GB1024GB = 1TB

4.计算机五大组成部分

控制器控制计算机各个硬件的工作运算器数学运算 逻辑运算存储器短期记忆即内存 长期记忆即硬盘输入设备    接受外界信息 鼠标 键盘 触摸屏输出设备    给外界传递信息 显示屏 打印机 音响
# 控制器 + 运算器 = CPU(中央处理器)"CPU:Central Processing Unit"

5.计算机三大核心硬件

CPU计算机中真正干活的部分(程序想要必须要有CPU参与)内存   存取数据速度极快 主要与CPU配合使用 相遇短期记忆硬盘   能够长久保存数据 相当于长期记忆
内存容量 2GB 4GB 8GB 16GB硬盘容量 500GB~~2TB
为什么不直接砍掉内存让CPU直接跟硬盘交互呢?首先虽然内存容量小但是运行速度非常快 无法跟硬盘对比其次就算让硬盘跟CPU交互 运行速度很慢满足不了需求所以让内在中间做桥接作用 这样既能提高效率也能保证数据保存
保存数据其实就是把内存的数据刷到硬盘当中的过程目前有两种保存数据机制方式1:实时检测文档变化 一旦有变化就进行保存操作方式2:循环定时任务 每个一段时间进行保存操作
操作系统:控制 协调 管理 计算机各个硬件的工作由于计算机各个硬件几乎一致 所以操作计算机各个硬件的代码也几乎相同 为了避免重复造轮子 就出来有个人出来专门干这个活儿 微软Windows
PC端常见的操作系统:Windows macOS Linux移动端常见操作系统:Android IOS 鸿蒙

6.编程与编程语言

什么是编程?# 人与计算机之间的交流的媒介
什么是编程语言?# 程序员将自己的思维逻辑以及想法用计算机能读懂的语言写下来的过程
编程语言的分类?编译型语言C++ 一次性翻译解释型语言Python 一句一句的翻译
编程语言的发展史?机器语言直接用二进制与计算机交流汇编语言用英语字母代替一串二进制高级语言用英语和符号与计算机交流

7.Python解释器

Python发展历史?时间发明于1989年 公开发行于1991年国家荷兰人物Guido 龟叔
Python解释器?pyhon1.x初期版本几乎不用pyhon2.xpython2.7(2020年以后不再维护更新)pyhon3.xpython3.6  python3.8下载官网:https://www.python.org/downloads/windows/
在CMD中使用python方法步骤?windows+r输入cmd回车切换盘符 D:切换目录 cd python38运行解释器 python退出解释器 exit()退到上一层目录 cd ..
运行Python的三种方式?cmd直接运行解释器命令运行IDE工具运行
IDE工具的分类?sunlinevscodepycharm

8.关于变量名

什么是变量?什么是常量?变量与常量就是为了让程序员具备事物状态的能力变量是记录变化的事物状态常量是记录固定的事物状态
三个注意事项?同一个数据值可以绑定多个变量名复制符号也可以做变量 这种情况下先找该变量名绑定的数据值一个变量名同一时间只能绑定一个数据值
变量名的命名规范?不建议用中文起变量名 太low了而且容易报错不建议用汉语拼音起变量名 不高级 太low了变量名只能出现字母、数字、下划线且不能以数字开头变量名尽量做到见明知意且不得与关键字冲突
变量的命名风格?下划线式name_from_userinfo = "almira"大驼峰体NameFromUserinfo = "almira"小驼峰体nameFromuserInfo = "almira"
三种注释语法?# 单行注释"""多行注释""""""多行注释"""

8.关于垃圾回收机制

首先要记住以下12个字

引用计数标记清楚分代回收

二、常用的基本数据类型及内置方法

1.八大数据类型概览

整型int浮点型float字符串str列表list字典dict布尔值bool元组tuple集合set

2.八大数据类型详细介绍

(1)整型相关基本知识

# 1.整型int定义:其实就是整数应用场景:年龄 年份 学生人数...代码实现:age = 18    year =2023    stu_num = 56

(2)整型相关内置方法

# 浮点型可以直接转 字符串必须满足内部是纯数字才可以类型转换int(其他数据类型)
# 十进制转其他进制print(bin(100))  # 0b1100100  0b 为二进制print(oct(100))  # 0o144  0o 为八进制print(hex(100))  # 0x64  0x 为十六进制

(1)浮点型相关基本知识

# 2.浮点型flaot定义:其实就是小数应用场景:身高、体重、薪资...代码实现:height = 1.56    weight = 48.5    salary = 3.1

(2)浮点型相关内置方法

# 字符串里面可以允许出现一个小数点 其他都必须是纯数字类型转换float(其他数据类型)

(1)字符串相关基本知识

# 3.字符串str定义:引号引起来的部分就是字符串应用场景:姓名、地址、爱好...代码实现:name = "almira"    addr = "xinjiang"    hobby = "study"    定义字符串的四种方式    ""    ""    """ """    """ """

(2)字符串相关内置方法

# 可以转任意数据类型(只需要在前后加引号即可)类型转换str(其他数据类型)
# 起始位置0开始 超出范围报错 支持负数从尾部开始索引取值print(s1[0])
# 顾头不顾尾 默认是从左往右切片操作print(s1[1:5])
# 最常用用的是括号里面为空的情况 可以移除首尾的空格 写登录注册时最常用移除字符串首尾指定的个数username = input("username>>>:").strip()
# 按照某个特定字符来切除 结果为列表切割字符串中指定的字符print(res.split("|"))
# 其实有四种玩儿法 最常用的是以下方法格式化输出res = f"my name is {name} my age is {age}"

(1)列表相关基本知识

# 4.列表list定义:其实就是可以存储多个以及任意数据类型且可以非常方便的取应用场景:存储多个数据值且将来可能需要单独取其中一些数据代码实现:name_list = ["almira", "lina", "linda", "bella"]    """可以索引取值 是从0开始格式:列表变量名[索引值]name_list[0] 结果是almira"""

(2)列表相关内置方法

# 能够被for循环的数据类型都可以转换成列表 如字符串、字典、元组、集合类型转换list(其他数据类型)
# 起始位置0开始 超出范围报错 支持负数从尾部开始索引取值print(l1[0])
# 顾头不顾尾 默认是从左往右切片操作print(l1[0:5])
统计列表中数据值的个数print(len(l1))
# 索引对应的数据值改成1232数据值修改l1[0] = 1232
# append尾部添加、insert索引位置插入、extend扩展列表添加数据值.append("") .insert(0, "almira") .extend(l1)
# del通用的删除关键字、remove索引位置移除、pop括号为空默认弹出末尾删除数据del l1[2] .remove(22) .pop(3)
# sort为默认升序括号里传参数reverse=True为降序列表排序.sort()
# 统计列表里面某个数据值的出现次数统计次数.count(111)
# reverse关键字可以颠倒顺序颠倒顺序.reverse(l1)

(1)字典相关基本知识

# 5.字典dict定义:能够非常精确的表达数据值的含义形式:大括号括起来 内部可以放多个数据 K:V键值对应用场景:以后的编程最常用的数据类型代码实现:info_dict = {        "username": "almira",        "age": 18,        "hobby": "study"    }   """K是key 键V是value 值每个键值对之间用逗号隔开可以按K取值格式:字典变量名["键"]info_dict["username"] 结果是almira"""

(2)字典相关内置方法

# 字典类型转换一般不用关键字 需要自己手动转换类型转换dict()
# K不存在时会直接报错按K取值print(user_dict["username"])
# get方法推荐使用 键不存在时报Noneget取值print(user_dict.get("username"))
# 修改键所对应的值修改数据user_dict["username"] = "almira"
# 键不存在时新增键值对新增键值对user_dict["age"] = 18
# 字典所对应的变量名前面加del或者点pop删除数据del .pop("键")
# 统计出字典所有的键值对统计数据print(len(user_dict))
# keys一次性获取所有的键values一次性获取所有的值 items一次性获取所有的键值对字典三剑客.keys() .values() .items()

(1)布尔值相关基本知识

# 6.布尔值bool定义:用来判断事物的对错(True False) 只要用于流程控制中应用场景:python中所有的数据类型都自带布尔值 很多程序中提供的注销账户的功能 其实底层并没有删除数据 而是修改了数据的状态代码实现:存储布尔值的变量名一般推荐使用is开头 is_delete = False         """布尔值为False的数据值:0 None "" [] {}布尔值为True的数据值:除了以上以外都是"""

(2)布尔值相关内置方法

布尔值没有相关的内置方法

(1)元组相关基本知识

# 7.元组tuple定义:也成"不可变"的列表 元组内索引绑定的内存地址不能修改形式:小括号括起来 内部存放多个数据值 用逗号隔开 就算元组内只有一个数据值也要加上逗号 可以是任何数据类型代码实现:t1 = (11, 22,  "almira")    # 一道练习题来袭    t1 = (11, 22, [111, 222])    t1[2][1] = 666    print(t1)    """    A.直接报错    B.(11, 22, [111, 666])    C.不知道 超出了我的认知    """    # 答案:B

(2)元组相关内置方法

# 支持for循环的数据类型都可以转成元组类型转换tuple()
# 如下内置方法上面总结过而且完全一样 所以只列出内置方法名称索引取值切片操作间隔方向统计个数统计次数统计指定必须逗号不可变的不能新增不能删除

(1)集合相关基本知识

# 8.集合set定义:集合只能用于去重与关系运算 里面的数据类型只能是不可变类型形式:大括号括起来 内部存放多个数据值 用逗号隔开 代码实现:s1 = {1, 2, 3, 3, 4, 6}        """定义空字典与空集合{}  默认是字典set() 默认是空集合"""

(2)集合相关内置方法

# 必须是不可变类型(整型 浮点型 字符串 元组) 集合是无序且无索引概念类型转换set()
# 集合关键字本身就是去重 集合不允许出现重复的数据值去重方法print(set)
# &求共同 -求独有 |求所有 ^求各自多有 用法是两个集合用这些符号链接即可关系运算& - | ^

三、流程控制理论

流程控制>>>:控制事物的执行流程

事物执行流程有三种类型 在编程过程中三者大部分情况下是混着使用

  • 顺序结构
  • 分支结构
  • 循环结构

关于流程控制必回基础知识

python中使用代码的缩进来表示代码的从属关系并不是所有的代码都可以拥有缩进的代码(子代码)如果有多行子代码属于同一个父代码 那么保证同等缩进量python中针对缩进量没有具体的要求 但是推荐使用四个空格(tab键)当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定要加冒号相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行

1.if 分支结构

# 1.单if分支结构if 条件:    条件成立之后才会执行的代码        username = input("请输入您的用户名>>>:")if username == "almira":    print("美女你好")
# 2.if...else...分支结构if 条件:    条件成立之后执行的代码else:    条件不成立之后执行的代码        if username == "almira":    print("美女你好")else:    print("滚蛋!!")
# 3.if...elif...else分支结构if 条件1:   条件1成立之后执行的子代码elif 条件2:    条件1不成立 条件2成立执行的子代码elif 条件3:    条件1和2都不成立 条件3成立执行的子代码else:    上述条件都不成立 执行的子代码        score = input("请输入您的成绩>>>:")score = int(score)  # 将字符串转换为整型if score >= 90:    print("excellent")elif score >= 80:    print("very goog")elif score >=70:    print("good")else:    print("oops, failed")
# if 的嵌套使用age = 18height = 180weight = 70is_beautiful = Trueis_success = Falseusername = "tom"if username == "tom":    print("tom find the target")    if age < 30 and height >160 and weight < 80 and is_beautiful:        print("hi handsome boy can i have ur wechat?")        if is_success:            print("see movie have dinner...")        else:            print("sry i have no time")    else:        print("sry wrong person maybe")else:    print("failed maybe")

2.while循环

循环结构就是让一些代码反复执行while 条件:    条件成立之后执行的子代码(循环体代码)
  1. 先判断条件是否成立
  2. 如果成立则执行循环体代码
  3. 循环体代码执行完毕之后再次回到判断处 继续判断条件是否成立
  4. 如果成立 则继续执行循环体代码
  5. 按照上述规律依次执行 当条件不成立时才会结束循环体代码的执行
count = 1while count < 5:print("hello world")count += 1print("复习使我快乐")break  # 结束循环whilecontinue  # 继续循环while
# 关于死循环真正的死循环是一旦执行 CPU功能消耗会急速上升 直到系统采取紧急措施 尽量不要让CPU长时间不间断运算# 关于嵌套及全局标志位一个break只能结束它所在的那一层循环有几个while的嵌套 想一次性结束 就应该写几个break如果不想反复写break 可以使用全局标志位
is_flag = Truewhile is_flag:    username = input("username>>>:")    password = input("password>>>:")    if username == "jason" and password == "123":        while is_flag:            cmd = input("请输入您的指令>>>:")            if cmd == "q":                is_flag = False            print("正在执行您的指令:%s" % cmd)    else:        print("用户名或密码错误")

3.for循环

for循环能够做到的事情while都可以做到 只不过for循环在一些场景下使用更简单主要场景:循环获取存储多个数据的数据内部数据值 for循环语法结构中的变量名如何命名见名知意如果遍历出来的数据值没有具体的含义可以使用常用的     i j k item v语法结构:for 变量名 in 待遍历的数据:   for循环体代码使用案例:    name_list = ["almira", "lina", "lida", "bella"]    for i in name_list:        print(i)

4.rage方法

range可以简单的理解为是帮我们产生一个内部含有多个数字的数据for i in range(101):  # 起始位置为0 终止位置为100     print(i)  # [0,.......100] for i in range(10, 20):  # 第一个为起始位置 第二个终止位置    print(i)    for i in range(1, 20, 2):  # 第三个数为等差值 默认不写为1    print(i) 在python2中range() 直接产生一个列表 内部含有多个数值xrange() 其实就是python3里面的range在python3中range() 类似于一个工厂 不会占用太多的内存空间 要就生产

四、字符编码理论以及实操

1.字符编码理论部分

字符编码只针对文本数据计算机内部只认识数字0和1计算机可以敲出各种字符的原因是内部存在一个数字跟字符的对应关系字符编码本就是用来存储该关系的地方字符编码的发展史一家独大:ASCII码 记录英文字母跟数字的对应关系 用9bit表示一个英文字符群雄割据:GBK 记录了英文、中文跟数字的对应关系 中文用16bit 英文8bit 日本shifts_JIS 韩国Euc_kr天下一统:Unicode万国码 兼容所有语言 utf系列:utf8 英文一个字节 中文三个字节

2.字符编码实操部分

针对乱码 解决方案是切换慢慢试即可编码:将人类语言转换成计算机能读懂的数据 字符串.encode()解码:将计算机能读懂的数据转换成人类语言 bytes类型数据.decode()python2默认的编码是ASCII码 文件头加 # encoding:utf8 字符串前面加 u"" 引号里面写字符串即可python3默认的编码是utf8系列(Unicode)

五、文件操作

1.文件操作理论

# 文件的概念文件就是系统暴露给用户操作硬盘的快捷方式双击一个文件其实就是从硬盘将数据加载到内存保存文件其实就是将内存中的数据刷到硬盘当中
# 代码打开文件的两种方式方式一:为了避免撬棍跟一些字母组合出现特殊含义前面加 r""f = open(文件路径,读写模式,encoding="utf8")  # 打开文件f.close()  # 关闭文件方式二:with方法支持一次性打开多个文件 自动调用close方法关闭文件with open("a.txt", "r", encoding="utf8") as f:    with子代码块

2.文件读写模式

"r"read 只读模式 只能读不能写 rt# 文件路径不存在直接报错 存在就正常运行with open(r"a.txt", "r", encoding="utf8") as f:    print(f.read())  
"w" write 只写模式 只能写不能读 wt# 文件路径不存在自动创建 存在就先清空内容再自己重新写入 换行符要自己添加with open(r"a.txt", "w", encoding="utf8") as f:    f.write("的确解决遗忘的最佳方法就是重复这就是广告效应\n")
"a" append 只追加模式 文件末尾添加数据 at# 文件路径不存在自动创建 存在就末尾自动追加内容with open(r"a.txt", "a", encoding="utf8") as f:    f.write("在复习过程中意识到了哪怕是非常难的知识点多复习就可以搞定") 

3.文件操作模式

# t文本模式(text) 默认模式 rt wt at只能操作文本文件读写都是以字符为单位需要指定encoding参数 如果不知道则会采用计算机默认的编码
# b二进制模式(bytes) 不是默认模式 需要自己指定 rb wb ab可以操作任意类型的文件读写都是以bytes为单位不需要指定encoding参数 因为它已经是二进制模式了 不需要编码

4.文件诸多方法

# 1.read() 一次性读取文件内容 并且光标停留在文件末尾 继续读取则没有内容并且当文件内容比较多的时候 该方法还可能会造成计算机内存溢出括号内还可以填写数字 在文本模式下 表示读取几个字符
# 2.readline()一次只读一行内容
# 3.readlines()一次性读取文件内容 会按照行数组织成列表的一个个数据值
# 4.readable()判断文件是否具备读数据的能力
# 5.for循环一行行读取文件内容 避免内存溢出现象的产生
# 6.write()写入数据
# 7.writelines()接收一个列表 一次性将列表中所有的数据值写入
# 8.writeable()判断文件是否具备写数据的能力
# 9.flush()将内存中文件数据立刻刷到硬盘 等价于ctrl + s

4.文件光标移动

with open(r"a.txt", "rb") as f:    print(f.read())    f.seek(0,0)    print(f.read())    f.seek(0, 0)    print(f.read())    # print(f.read(2).decode("utf8"))    # f.seek(-1, 2)    # print(f.tell())  # 返回光标距离文件开头产生的字节数    # print(f.read(3).decode("utf8"))    seek(偏移量,模式)offset 偏移量只能以字节为单位 whence 模式有三种 0表示开头 1表示当前位置 2表示文件末尾tell()返回光标距离文件开头已经移动了多少个字节
import timewith open(r"a.txt", "rb") as f:    f.seek(0, 2)    while True:        line = f.readline()        if len(line) == 0:            # 没有内容            time.sleep(0.5)        else:            print(line.decode("utf8"), end="")

6.文件内容修改

硬盘写数据可以看成是在硬盘上刻字 一旦需要修改中间内容 则需要重新刻字因为刻过的字不可能从中间再分开

硬盘删除数据的原理:不是直接删除而是改变状态 等待后续数据的覆盖才会被真正删除

# 修改文件内容的方式1:覆盖写with open(r"a.txt", "r", encoding="utf8") as f:    data = f.read()     with open(r"a.txt", "w", encoding="utf8") as f1:    f1.write(data.replace("jason", "tony"))
# 修改文件内容的方式2:换地写"""先在另外一个地方写入内容 然后将源文件删除 将新文件命名成源文件"""import oswith open("a.txt", "r", encoding="utf8") as read_f, \        open(".a.txt.swap", "w", encoding="utf-8") as write_f:    for line in read_f:        write_f.write(line.replace("tony", "kevinSB"))os.remove("a.txt")  # 删除a.txtos.rename(".a.txt.swap", "a.txt")  # 重命名文件

关键词: 数据类型 文件操作 流程控制