Python 程序基础

计算机组成原理

计算机组成

计算机硬件通常由以下几部分组成:

  1. 中央处理器(CPU):负责执行计算机指令,完成各种计算和逻辑操作。
  2. 存储器(Memory):用于存储计算机执行程序所需的数据和指令,包括主存(Random Access Memory,RAM)和辅助存储器(如硬盘、光盘等)。
  3. 输入设备:用于向计算机输入数据和指令,如键盘、鼠标、扫描仪等。
  4. 输出设备:用于将计算机处理结果显示或打印出来,如显示器、打印机等。
  5. 总线:用于连接计算机各个部分,包括数据总线、地址总线和控制总线等。

在这里插入图片描述

存储器对比

磁盘(Disk)

磁盘是计算机中最慢的存储器之一,读取速度比内存慢很多。由于磁盘通常用于永久存储数据,每秒钟可以完成的读取操作数量通常在几百到几千之间。

在这里插入图片描述

内存(Memory)

内存的读取速度比寄存器慢,但是比磁盘快很多。由于内存的容量较大,每秒钟可以完成的读取操作数量通常在数百万到数千万之间。

在这里插入图片描述

寄存器(Register)

寄存器是CPU内部最快的存储器,读取速度非常快,通常是其他存储器读取速度的几百倍。由于寄存器的大小有限,只能存储极少量的数据,因此每秒钟可以完成的读取操作数量非常多,可能在数十亿次到数百亿次之间。

在这里插入图片描述

总结:

​ 读取速度:寄存器 > 内存 > 磁盘(外存)【速度差值在100倍左右】

​ 数据调度方向:

在这里插入图片描述


编程语言

在这里插入图片描述

编程语言的发展历程

机器语言(1930-1960s)

机器语言阶段:计算机发明初期,程序员需要使用二进制码来编写程序,这些二进制码被称为机器语言。

机器语言非常难以记忆和理解,难以维护和调试,因此随着计算机技术的发展,人们开始探索更高级的编程语言。

汇编语言(第一个汇编语言1947 伦敦大学)

对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。

汇编语言阶段:为了简化机器语言的编写,人们发明了汇编语言,它使用符号代替了二进制码。汇编语言虽然比机器语言更易于理解和编写,但仍然需要程序员对计算机硬件有深入的了解,难以编写大型程序。

我们知道,CPU 只负责计算,本身不具备智能。

输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011

汇编语言诞生后,相较于机器语言就多出一个步骤,即把这些文字指令翻译成二进制,这个步骤就称为 assembling,完成这个步骤的程序就叫做 assembler。它处理的文本,自然就叫做 aseembly code。标准化以后,称为 assembly language,缩写为 asm,中文译为汇编语言。

现代高级语言

  • 1972 C语言
  • 1980 C++
  • 1991 Python/VB
  • 1994 Java
  • 1995 PHP/JavaScript

高级语言阶段,高级语言提供了更加抽象和易于理解的语法,使得编写程序变得更加简单和高效。随着计算机硬件的发展,高级语言的应用越来越广泛,例如C、C++、Java、Python、JavaScript等。

实例

实现1+1:

机器语言实现:

00011010 00000001      //1加载到寄存器A中
00011010 00000001      // 再将1加载到寄存器B中
00000100 00001000      // 将寄存器A中的值与寄存器B中的值相加,并将结果保存到寄存器A中

在这个示例中,第一条指令将数字1加载到寄存器A中,第二条指令将数字1加载到寄存器B中,第三条指令将寄存器A和B中的值相加,并将结果保存到寄存器A中。

汇编语言实现:

mov ah, 1
add ah, 1

在这个示例中,使用MOV指令将数字1移动到AH寄存器中,然后使用ADD指令将数字1加到AH寄存器中。最终,AH寄存器中的值为2。

C语言实现:

int c = 1 + 1;

代码复杂度、易用性比较

在这里插入图片描述

问题:

​ 编写一个程序,读取一个文件中的文本内容,并统计其中每个单词出现的频率。

Python实现:

import re

with open('example.txt', 'r') as f:
    text = f.read()

words = re.findall(r'\b\w+\b', text.lower())
freq = {}
for word in words:
    freq[word] = freq.get(word, 0) + 1
    
for word, count in freq.items():
    print(f'{word}: {count}')

C语言实现:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

#define MAXLEN 1000

int main(){
    FILE* fp;
    char line[MAXLEN];
    char* word;
    int freq[MAXLEN] = {0};

    fp = fopen("example.txt", "r");
    if (fp == NULL)
    {
        printf("无法打开文件\n");
        return 1;
    }
    while (fgets(line, MAXLEN, fp) != NULL)
    {
        word = strtok(line, " \t\r\n");
        while (word != NULL)
        {
            for (int i = 0; word[i] != "\0"; i++)
            {
                word[i] = tolower(word[i]);
            }
            freq[word]++;
            word = strtok(NULL, " \t\r\n");
        }
    }

    for (int i = 0; i < MAXLEN; i++)
    {
        if (freq[i] > 0)
        {
            printf("%s: %d\n", i, freq[i]);
        }
    }
    
    fclose(fp);
    return 0;
}

总结:

​ Python:

  • 优点:开发效率高、封装性高
  • 缺点:运行性能慢

编译型语言 & 解释型语言

按编译类型分类

  • 编译型:C、C++、GO ···
  • 解释型:Python、PHP、Ruby、JavaScript ···
  • 混合型:Java

编译型语言优缺点

  • 1.一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
  • 2.与特定平台相关,一般无法移植到其他平台;

解释型语言优缺点

  • 1.解释型语言每次运行都需要将源代码解释称机器码并执行,执行效率低;
  • 2.只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;

在这里插入图片描述

Python环境的安装

为何要装Python环境 ?

因为我们写的代码是人类可读的,但计算机是靠电流驱动的,它只认识010100101,我们即将安装的python环境就是Python解释器,它就像个翻译官,把人类代码翻译成机器能读懂的010101二进制代码。

在这里插入图片描述

Python目前已⽀支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,只有Windows系统需要安装一下。

安装Python解释器

打开Python官网:Welcome to Python.org

在这里插入图片描述

点击Downloads

在这里插入图片描述

这里有32位、64位和64位ARM框架版本,要和自己的电脑系统相对应。

在这里插入图片描述

下载后执行,点击下一步安装就行了,注意选择添加Python到当前⽤用户环境变量量里。

在这里插入图片描述

Windows配置环境变量量(选做)

如果上一步你没有勾选Add python.exe to PATH,也不用太担心。我们可以自己添加Python到环境变量。

以Win11为例:

找到我的计算机,右单击 —>属性 —> 高级系统设置 —> 环境变量
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

找到变量名为Path的环境变量,双击进入,再点击 新建 ,再填入Python的安装位置。

本机的安装位置为c:\python\

在这里插入图片描述

现在我们来验证一下是否添加成功:

windows —> 运行 —> 输入cmd ,然后回车,弹出cmd程序,输⼊入python,如果能进入交互环境 ,代表环境变量添加成功

在这里插入图片描述

安装集成开发环境(IDE)

目前python有很多集成开发环境,如**Eclipse + PyDevSublime TextVisual Studio Code**、PyCharm

在这里作者推荐使用 PyCharm ,安装教程也以 PyCharm 为例,其他 IDE 的安装请自行查找。

PyCharm 介绍

Pycharm是由JetBrains打造的一款专门用于编写和开发Python应用程序的集成开发环境IDE,也是专业的Web开发工具。

当你非常熟悉Python开发的时候,那么这款IDE将会帮助你提高开发效率,因为它不仅仅是写代码那么简单,它还有调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等一系列功能!

在这里插入图片描述

PyCharm 版本

PyCharm的版本类型包括专业版、教育版、社区版

社区版(Community)

这个版本官方是完全免费的,适用于个人小型团队,同样这个版本也带有最基本的Python开发功能, 比如:代码高亮、代码完成、调试工具

这也是今天主要讲的版本,对于刚刚入门Python开发的小伙伴来说完全够用了

在这里插入图片描述

专业版(Professional)

这个版本是收费的(有30天的试用期), 并且价格根据所选择的许可类型和期限而有所不同, 许可类型包括个人商业许可证,期限包括1年、2年和3年等等,它适用于公司进行专业互联网开发, 也就是商业开发,功能更加强大。

它包含了所有社区版(Community)的所有功能,并且还包含了更多的高级功能,如代码分析、集成版本控制、Web开发工具等。

在这里插入图片描述

教育版(Education)

这个版本主要是针对教育培训机构设计的版本,它包含了Professional版本的所有功能,并且可以通过教育资格申请来获取学生和教师的免费使用权利

在这里插入图片描述

下载 PyCharm

下载地址 Download PyCharm: Python IDE for Professional Developers by JetBrains

找到下面的PyCharm Community Edition(社区版) 点击下载即可!

在这里插入图片描述

出现下图界面就代表开始下载了

在这里插入图片描述

下载完成之后,我们会得到一个的安装包文件!

安装 PyCharm

安装其实也很简单,就跟一般的软件安装一样!

我们首先双击安装包文件, 会弹出以下对话框

在这里插入图片描述

点击下一步

接着我们选择安装目录,建议安装容量大一点的盘符下,不要安装在C盘

在这里插入图片描述

然后继续点击下一步

接着来到我们的设置对话框,建议把选项全部勾选上, 然后点击下一步继续!

在这里插入图片描述

最后点击安装即可开始安装PyCharm

完成安装!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/409823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32单片机基本原理与应用(九)

SDIO/SD卡实验 实验内容 将SD卡插入实训平台并烧写程序&#xff0c;开机后TFTLCD屏幕上会显示是否成功初始化SD卡并显示SD卡容量。 电路原理图 实验原理 SD卡的通信方式有两种&#xff1a;SPI和SDIO。SD卡有五种寄存器&#xff0c;如下表 SD 卡的指令由 6 个字节组成&…

定时执行专家 - 扩展功能详解(109个Nircmd命令、无限扩展的脚本功能)

目录 ◆ 109个Nircmd命令 ▼ 如何使用109个Nircmd ▼ 关于Nircmd ◆ 无限扩展的脚本 ▼ VBS脚本 ▼ BAT脚本 ◆ 关于软件的安装使用说明 ▼软件介绍▼ ▼定时执行专家 - 详细安装教程▼ ▼定时执行专家 - 自动截屏教程▼ ▼重要提醒&#xff1a;软件安装目录▼ ◆ V…

JWT学习笔记

了解 JWT Token 释义及使用 | Authing 文档 JSON Web Token Introduction - jwt.io JSON Web Token (JWT&#xff0c;RFC 7519 (opens new window))&#xff0c;是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准&#xff08;(RFC 7519)。该 token 被设计为紧凑…

微服务基础环境搭建

一.创建父工程 用于聚合其他微服务模块 1 新建 Maven 项目 JDK8Maven 项目Web 2 项目设置 编码的选择 UTF8JDK 版本的选择 3 删除 src 目录 4 配置父级 pom.xml SpringBoot&#xff1a;模块探究之spring-boot-dependencies-CSDN博客 子模块能够依赖当前父级 pom.xml 配置 【My…

数据结构-Queue队列

一,队列的简单认识 队列也是一种线性数据结构,与栈不同的是,它只能从一端添加元素,从另一端取出元素.定义了一端,另一端也就确定了. (当然还有一个特殊的双向队列LinkedList除外,它既可以从队首添加元素,也可以移除元素,队尾也是一样的,既可以添加元素,也可以移除元素) 二,队…

有哪些副业渠道?

夸克网盘这个软件出来好久了&#xff0c;官方前不久才开通了推广渠道&#xff0c;这就给了我们以此赚钱的机会。具体时间应该是在2022年12月份。 所谓夸克网盘拉新&#xff0c;就是夸克网盘为了抢占市场&#xff0c;与其他网盘竞争对手&#xff08;百度网盘、迅雷网盘等&#…

一键生成请求方法的工具 —— OpenAPI Typescript Codegen

文章目录 用法自定义请求参数的方法1&#xff09;使用代码生成器提供的全局参数修改对象2&#xff09;直接定义 axios 请求库的全局参数&#xff0c;比如&#xff1a;全局请求响应拦截器 报错解决 用法 首先下载axios npm install axios官网&#xff1a;https://github.com/f…

Centos中安装Docker及Docker的使用

在centos7系统中安装指定版本的docker,并通过docker使用安装mysql为例,阐述docker的使用。 2.1、Docker卸载及安装yum依赖 【卸载Docker,如果安装的Docker的版本不合适】 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-…

Kafka之Producer源码

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

常用路径规划算法简介及python程序

目录 1、前言2、D*算法2.1简介2.2优缺点2.2.1 优点2.2.2 缺点 2.3 python程序 3、A*算法3.1 优缺点&#xff1a;3.1.1 优点&#xff1a;3.1.2 缺点&#xff1a; 3.2 python程序 4、人工势场算法4.1优缺点4.1.1优点&#xff1a;4.1.2缺点&#xff1a; 4.2 python程序 5、Dijkstr…

BeautifulSoup+xpath+re+css简单复习+新的scrapy的学习

1.BeautifulSoupsoup BeautifulSoup(html,html.parser)all_icosoup.find(class_"DivTable") 2.xpath trs resp.xpath("//tbody[idcpdata]/tr") hong tr.xpath("./td[classchartball01 or classchartball20]/text()").extract() 这个意思是找…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月26日,星期一

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年2月26日 星期一 农历正月十七 1、 气象台&#xff1a;3月初之前南方大部将维持阴雨雪天气。 2、 据海关统计&#xff0c;京津冀协同发展十年成效显著&#xff0c;外贸总量跨两个万亿台阶。 3、 2024年研考初试成绩今天起…

【数据库】MySQL视图 | 用户管理

文章目录 1 :peach:视图:peach:1.1 :apple:基本使用:apple:1.1.1 :lemon:创建视图:lemon:1.1.2 :lemon:案例:lemon:1.1.3 :lemon:删除视图:lemon: 1.2 :apple:视图规则和限制:apple: 2 :peach:用户管理:peach:2.1 :apple:用户信息:apple:2.2 :apple:创建用户:apple:2.3 :apple:…

国企行政题库--校园招聘

国企行政题库是为准备参加国有企业行政类岗位校园招聘的应聘者提供的一套专门准备的试题资料。国有企业在中国经济中扮演着重要的角色&#xff0c;其行政类岗位需求量大&#xff0c;竞争激烈。通过系统学习和准备国企行政题库&#xff0c;将有助于应聘者更好地了解国企行政类岗…

解析OOM的三大场景,原因及实战解决方案

目录 一、什么是OOM 二、堆内存溢出&#xff08;Heap OOM&#xff09; 三、方法区内存溢出&#xff08;Metaspace OOM&#xff09; 四、栈内存溢出&#xff08;Stack OOM&#xff09; 一、什么是OOM OOM 是 Out Of Memory 的缩写&#xff0c;意思是内存耗尽。在计算机领域…

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …

QEMU源码全解析 —— virtio(24)

接前一篇文章&#xff1a; 上回书讲解了virtioballoon_probe函数及其中的两个重要函数init_vqs()和virtio_device_ready()&#xff0c;解析了init_vqs函数的前两步&#xff0c;本回继续解析该函数&#xff0c; &#xff08;3&#xff09;init_vqs函数在经过了对于各feature的初…

【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制

【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制 文章目录 前言一、脉振高频电压注入法简介&#xff08;注入在旋转坐标系的d轴&#xff09;1.旋转高频电压&#xff08;电流&#xff09;注入法2.脉振高频电压注入法 二、高频注入理论1.永磁同步电机的高频模型2…

EasyRecovery2024个人免费版本电脑手机数据恢复软件下载

EasyRecovery是一款功能强大的数据恢复软件&#xff0c;能够帮助用户恢复丢失、删除、格式化或损坏的数据。无论是由于误操作、病毒攻击、硬盘故障还是其他原因导致的数据丢失&#xff0c;EasyRecovery都能提供有效的解决方案。 该软件支持从各种存储介质恢复数据&#xff0c;…

springboot215基于springboot技术的美食烹饪互动平台的设计与实现

美食烹饪互动平台的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统美食信息管理难度大&…