计算机科学和Python编程导论(二 ) Python简介

计算机导论以python为舟_计算机科学导论 《计算机科学导论(第5版)》按照教育部高教司主持评审的《中国计算机科学与技术学科教程2002》进行编写,并参照美国计算机学会(Association for Computing Machinery,ACM)和美国电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)的计算教程2015,用逻辑严密的编写方式将读者引入本学科各... 阅读详情

基本概念

1. 编程语言的分类

低级编程与高级编程:二者之间的区别是,编写程序时,我们是使用机器层次的指令和数据对象(底层操作),还是使用语言设计者提供的更为抽象的操作(图形用户界面,UI)。

通用性与专注于某一应用领域:指编程语言中的基本操作是广泛适用的还是只针对某个领域,例如SQL。

解释运行与编译运行:指程序员编写的指令序列,即源代码是直接执行(通过解释器,使用解释型语言编写的程序更易调试,因为解释器可以给出与源代码相关的错误信息。),还是要先转换成机器层次的基础操作序列。(通过编译器,编译型语言(如,java)编写的程序速度更快,占用的空间也更少。)

2. Python 基本元素

python中对象:对象分为标量对象(不可再分)和非标量对象(有内部结构,可再分)。Python有以下4类标量对象:

  1. int:表示整数。
  2. float:表示实数。
  3. bool:表示布尔值True和False。
  4. None:这个类型只有一个值。

操作符:对象和操作符可以组成表达式,每个表达式都相当于某种类型的对象,我们称其为表达式的值。

int类型和float类型支持的操作符:

  1. i + j:i和j的和。
  2. i - j:表示i减j。
  3. i * j:i和j的积。
  4. i // j:表示整数除法。只返回商,不返回余数。
  5. i / j:表示i除以j。
  6. i % j:表示int i除以int j的余数。通常读作i mod j,是i modulo j的缩写。
  7. i ** j:表示i的j次方。如果i和j都是int类型,结果也是int类型。

注:如果i和j都是int类型,结果也是int类型。如果其中任意一个是float类型,那么结果就是float类型。

比较运算符:包括:==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)和<=(小于等于)。

bool类型上的基本操作符:and、or和not

  1. a and b:当a和b都为True时,值为True,否则为False。
  2. a or b:当a和b至少有一个为True时,值为True,否则为False。
  3. not a:如果a为False,值为True;如果a为True,值为False。

变量:在Python中,变量仅是名称,没有其他意义。赋值语句将=左边的名称与=右边的表达式所表示的对象关联起来,一个对象可以有一个或多个名称与之关联,也可以不关联任何名称。

多重赋值:Python支持多重赋值。如:x, y = 2, 3

变量名:将程序写得清晰易懂极其重要,恰当地选择变量名称在增强程序可读性方面扮演了重要角色。

  1. 在Python中,变量名可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字符_。
  2. Python变量名是大小写敏感的,如Julie和julie就是不同的变量名。最后,Python中还有少量的保留字(有时称为关键字),它们有专门的意义,不能用作变量名。
  3. Python 3中的保留字包括and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、nonlocal、None、not、or、pass、raise、return、True、try、while、with和 yield。

3. 程序分支

最简单的分支型程序是条件语句

程序运行时间:

  1. 假定每行代码都需要以单位时间运行,那么有n行代码的直线型程序就需要n个单位时间。那么有n行代码的分支型程序呢?它运行的时间可能会少于n个单位时间,但绝不会超过n个单位时间,因为每行代码至多运行一次。
  2. 如果一个程序运行的最长时间是由程序长度决定的,那么可以称为以常数时间运行。这并不意味着它每次运行都执行相同的步骤,而意味着存在一个常数k,使得这个程序肯定会在k个步骤之内结束运行。其中隐含的意义是,这种程序的运行时间并不随着程序输入量的增加而增加。

4. 字符串和输入

str类型的对象:用来表示由字符组成的字符串。str类型的字面量可以用单引号或双引号表示,如’abc’或”abc”。

重载:即根据应用其上的对象类型的不同,它的意义也不同。操作符+存在重载的情形,例如:

  1. 应用于两个数值对象时,它表示相加;
  2. 应用于两个字符串时,它表示连接。

字符串:是Python中的序列类型之一。所有序列类型都可以执行以下操作:

  1. 可以使用len函数求出字符串的长度。例如,len(‘abc’)的值是3。
  2. 可以使用索引从字符串提取单个字符。例如,在解释器中输入’abc’[0]会显示字符串’a’。
  3. 可以使用切片操作从字符串提取任意长度的子串。如果s是个字符串,那么表达式s[start:end]就表示s中从索引start开始至索引end-1结束的子串。例如,’abc’[1:3] =’bc’ 。
    注:为什么在索引end-1 处而不是在end 处结束呢? 这样做是为了让’abc’[0:len(‘abc’)]这样的表达式具有我们希望的值。如果冒号前面的索引值省略,那么默认值为0;如果冒号后面的索引值省略,那么默认值就是字符串的长度。于是,表达式’abc’[:]在语义上就等同于更加冗长的’abc’[0:len(‘abc’)]。

input函数:可以直接接受用户输入。它可以使用一个字符串作为参数,显示在shell中作为提示信息,然后等待用户输入,用户输入以回车键结束。用户输入的行信息被看作一个字符串,并成为这个函数的返回值。

name = input('Enter your name: ')

字符串进行类型转换:只要字符串中的值是某种类型的有效字面量,就可以对字符串进行类型转换。

  1. 例如,int(‘3’) * 4的值是12。

  2. 当一个float值被转换成int值时,数值是被截断的(不是四舍五入)。
    例如,int(3.9)的值是int 3。

Unicode编码的由来:

字符串存在编码问题。

  1. 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)(2的8次幂等于256,即8个位置每个位置可以选择0或者1,总共有256种可能,从0开始就到了255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
  2. 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
  3. 类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
  4. Unicode通常用两个字节表示一个字符(这时候就有2的16次幂种可能),原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

UnicodeDecodeError处理:
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。 可以在第一行添加注释:

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。

5. 迭代

需要程序多次做同一件事情的时候,可以使用迭代语句,最简单的迭代语句就是for循环

编程练习

1.实际练习:编写一个程序,检查3个变量x、y和z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

# 解法1
def odd_max_input(x, y, z):
    list = []
    for i in [x, y, z]:
        if i % 2 == 1:
            list.append(i)
    if len(list) == 0:
        print('没有奇数')
    else:
        print(max(list))
# 解法2
def odd_max_input(x,y,z):
    a=sorted([x,y,z],reverse=True)
    for i in a:
        if i%2==1:
            return i
    print('没有奇数')
# 解法3
def odd_max_input2(x,y,z):    
    a=[x,y,z]
    max =0
    for i in a:
        if i%2==1:
            if i > max:
                max = i
    if max==0:  
        print('没有奇数')
    else:
        print(max)

2.实际练习:将以下代码中的注释替换为while循环语句。
numXs = int(input(‘How many times should I print the letter X? ‘))
toPrint = ”
numXss=abs(numXs)
concatenate X to toPrint numXs times

numXs = int(input('How many times should I print the letter X? '))
toPrint = ''
while numXss!=0:
    toPrint = toPrint+'X'
    numXss=numXss-1
print(toPrint)

3.实际练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数。如果用户没 有输入奇数,则输出一个消息进行说明。

# 解法1
a=0
numXs =[]
while a!=10:
    b=int(input('please input 10 int '))
    numXs.append(b)
    a+=1
numXss=sorted(numXs,reverse=True)
c=0
for i in numXss:
    c+=1
    if i%2==1:
        print('最大的奇数是{}'.format(i))
        break
    elif c==10:
# 解法2
r = input('输入10个数字,用,[英文格式]间隔:')
list = [i for i in map(lambda i: int(i), r.split(',')) if i % 2 == 1]
print(list)
if len(list) == 0:
    print('no odd')
else:
    print(max(list))
MIT《计算机科学与编程导论》课堂笔记 Introduction to Computer Science and Programming Lecture 1 Focus on concepts and tools of computational thinking. Learn how to think like a computer scientist. Skills: 阅读详情

相关推荐

程序员入门编程,看这10本书,少走10年弯路

书籍是知识和智慧的重要来源。但不幸的是,现在很多人已经不愿意看书了。程序员更是罕见地会去读书,最常见的依靠互联网搜索结果来找寻答案 如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。 程序员入门书籍推荐 一、计算机科学导论 《计算机科学导论》是国外计算机等IT相关专业本科生的一本基础课教材,也是一本非常经典的计算机入门读物。作为一本百科全书式的计算机专业基础入门读物,书中涉及计算机科学的方方面面。虽然读者对象

lh576的博客 1万+

【Python】学习笔记

简单的学习记录

m0_53887937的博客 318

MIT 6.00.1x 计算机科学和Python编程导论 Set 1

MIT 6.00.1x 计算机科学和Python编程导论 Set 1

pivilion的博客 1814

标量 非标量 用户可见分量 的理解

c++编译时有个报错: error: conversion from ‘const google::protobuf::Message’ to non-scalar type ‘tensorflow::NodeDef::NodeDef_AttrEntry’ requested这个问题解决是不难。顺便搜了一下,什么是标量, 什么是非标量。网上搜到的文章,给出的大致定义是  如果一个类型没有用户可见的...

anthea_luo的博客 1885

MIT Python编程与计算机科学导论课程设计及问题集解答

本文还有配套的精品资源,点击获取 简介:《MIT-6.0001:Python编程与计算机科学基础导论》是一门介绍基础计算机科学和Python编程的课程。该课程旨在教授学生Python的基础知识和计算机科学的核心概念。本压缩包包含了课程作业集的解答,覆盖了从基础语法到复杂概念如面向对象编程和递归函数的各个方面。学生可以通过这些详细解答来加深对课程内容的理解,并提高实际编程能力...

weixin_42146230的博客 1449

ESP32 CAM安装配置 第四部份:通过使用ESPHome的方式ESP32 Cam加到HomeAssistant

这些包括 aec_value, aec2, ae_level, agc_gain, gain_ctrl, bpc, wpc, raw_gma, lenc, hmirror, dcw, colorbar 等。这些参数的可能值和具体效果会根据你的摄像头硬件和 ESPHome 的版本有所不同。在 ESPHome 中配置 ESP32 Cam 时,每个参数的可能值取决于具体的功能和支持范围。值的范围是 0 到 63,其中 0 是最差质量,63 是最佳质量。horizontal: 水平校正的强度,通常是一个数字值。

weixin_42895252的博客 3364

同余定理 应用于大整数取模

数学上,两个整数除以同一个整数,若得相同余数,则二整数同余(英文:Modular arithmetic;德文:Kongruenz)。同余理论常被用于数论中。最先引用同余的概念与符号者为德国数学家高斯。——摘自 百度百科 (a + b)% n = ((a % n) + (b % n)) % n (a - b) % n = ((a % n) - (b % n) + n) % n

zzu::myorange 1260

CAN总线BusOff恢复机制详解:快慢恢复策略在车载网络中的实战应用

本文深入解析了CAN总线BusOff恢复机制,重点阐述了快慢恢复策略在车载网络中的工程应用。通过对比NXP S32K与STM32平台的实现代码,并结合CANoe仿真与参数优化方法,为工程师提供了从理论到实战的完整解决方案,旨在提升车载网络的可靠性与功能安全。

7up55的博客 615

Python——数据类型及运算符

数据类型 对象是Python程序操作的核心,每个对象都有一个类型,它规定了程序可以对该类型对象进行哪些操作。类型分为标量的和非标量的。标量对象是不可分割的单个对象。非标量对象——例如字符串(String)——通常不是单个的整体,而是有可分解的内部结构的。 Python有4种类型的标量对象: int对象用来表示整数。int类型的对象可通过字面直接看出,如3、9001或-72等。 float对象用于表示实数。float类型的对象也可通过字面很容易地看出来,如23.0、9.48或-72.28。 bool

qq_54219037的博客 2032

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

智能制造之物料详解

制造业业务系统中的物料流转贯穿需求、采购、生产到交付全流程,各系统协同实现精准追踪。需求阶段由CRM/ERP/PLM生成物料计划;采购入库阶段SCM/WMS/QMS完成采购质检;生产阶段MES/APS协调领料加工;成品交付阶段WMS/SCM处理出库物流。整个流程以BOM为蓝图,ERP为调度中心,通过数据联动实现物料状态、位置和数量的全链路可追溯。

cdfunlove的博客 654

计算机编程导论python程序设计答案-计算机科学与Python编程导论_学堂云答案

计算机科学与Python编程导论_学堂云答案答案:更多相关问题保险公司在承保时必须评估保险标的面临的实质性风险因素和投保人或被保险人可能存在的道德风说明通风、空调的概念现金等价物一般是指证券市场上流通的3个月以内到期的政府债券。()银行信用是一种独立的借贷资本的运动,它与产业资本运动并不完全一致。()火区封闭后,人员应立即撤出危险区。进入检查或加固密闭墙,应在24h之后进行。()柴油机在运行中引起...

weixin_37988176的博客 886

SNAP计算哨兵2号的LAI/FVC/FAPAR

SNAP的计算LAI方法是基于PROSAIL模型,集成的模块,很方便。首先要下载SNAP软件,下载步骤见。

所有专家都曾始于新手 2506

MIT 计算机科学和Python 编程导论

其实上一本书《笨办法学python》严格意义上来说,算不上是入门书,因为它主要目的是让你去找到敲代码的感觉,基本不涉及计算机的内容。说到真正的入门,MIT的《计算机科学和python编程导论》这门课程是个非常好的选择。对于想要入门python的人来说,这门课程不会让你失望,但是它能给你的不止于此,其实这门课程的核心目的,是以python这门语言为媒介,向你介绍计算机科学领域的重要基础内容。有了这个

crazy_banana的博客 7444

PyTorch深度学习实战(4)——常用激活函数和损失函数详解

激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。

盼小辉丶的博客 1万+

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

Systemcall名屋 623

MIT 计算机科学及编程导论 Python 笔记 1

计算机科学及编程导论在 MIT 的课程编号是 6.00.1,是计算机科学及工程学院的经典课程。之前,课程一直使用 Scheme 作为教学语言,不过由于 Python 简单、易学等原因,近年来已经改用 Python 作为教学语言了。更多介绍 最初知道这个课程的时候大概是在 2014 年,对于做事拖沓的我,这门课程已经从低清随堂录制变成了 edX 平台的一门 高清的 MOOC,转眼间已经大三...

188

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。

4万+

计算机科学和python编程导论答案_计算机科学与Python编程导论_学堂在线章节测试答案...

计算机科学与Python编程导论_学堂在线章节测试答案更多相关问题决定工程项目实施的成败及能否高效率地达到预期目标的是()。在节能重点领域的电力工业方面,大力发展()kW及以上超临界机组、大型联合循环机组。我国正处于城镇化、工业化快速发展阶段,到2010年和2020年,城镇化率将分别达到()。某投资项目的单因素敏感性分析中,基本方案对应的销售量为0.8万台/年,财务内部收益率为25在工程项目策划和...

weixin_39905226的博客 238

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python交互式程序设计导论答案第五周_学堂在线_计算机科学与Python编程导论_章节测试答案...

学堂在线_计算机科学与Python编程导论_章节测试答案更多相关问题素描的三种表现形式是:()。运行下列程序:Private Sub form_Click()For i = 1 To 2x = 1For j = 1 To 3x = 5For k = 1 T窗体上仅有一个文本框Text1,当执行程序后按下键盘“a”键时打印出的结果是()。Private Sub Text为提供线路的利用率,数据通信中...

weixin_39834090的博客 586

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机科学与python编程导论_计算机科学入门和使用Python编程

你将学到什么A Notion of computationThe Python programming languageSome simple algorithmsTesting and debuggingAn informal introduction to algorithmic complexityData structures课程概况This course is the first of ...

weixin_39813263的博客 330

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

计算机科学与python编程导论_【基于Python】MIT OCW 计算机科学与编程导论

【基于Python】MIT OCW 计算机科学与编程导论(MIT Course Number 6.0001)Introduction to Computer Science and Programming in Python, MIT OPENCOURSEWARE之前选了MIT的C语言导论,这次同样在MIT的EECS的OCW上选,选择这门课,MIT计算机科学与编程导论,并结合Python代码实践,...

weixin_39915267的博客 351

mit python 公开课_MIT 计算机科学及编程导论 Python 笔记 1

计算机科学及编程导论在 MIT 的课程编号是 6.00.1,是计算机科学及工程学院的经典课程。之前,课程一直使用 Scheme 作为教学语言,不过由于 Python 简单、易学等原因,近年来已经改用 Python 作为教学语言了。更多介绍最初知道这个课程的时候大概是在 2014 年,对于做事拖沓的我,这门课程已经从低清随堂录制变成了 edX 平台的一门 高清的 MOOC,转眼间已经大三,希望自己能...

weixin_39917811的博客 341

计算机编程导论python程序设计答案-学堂云_计算机科学与Python编程导论_作业课后答案...

学堂云_计算机科学与Python编程导论_作业课后答案答案:更多相关问题保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的。()基金经理主要依据股票投资价值报告来决定实际的投资行为。()多重负债下的现金流匹配策略没有任何免疫期限的现值,也不承担任何市场利率风险,但成本往往较高0(资本市场线只是揭示了有效组合的收益风险均衡关系,而没有给出任意证券或组合的收益风险关系。()信用证项下的...

weixin_37988176的博客 140

计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...

学堂在线_计算机科学与Python编程导论_作业课后答案答案:更多相关问题近代中国完全沦为半殖民地半封建社会的标志是:A.《马关条约》B.《辛丑条约》C.《凡尔赛和约》D.《江华条法律调整的对象是划分部门法的:A.根本标准B.唯一的客观标准C.首要标准D.唯一标准当今世界经济全球化的主要载体是:A.发展中国家B.世贸组织C.欧洲联盟D.跨国公司克隆技术属于生物技术中的:A.遗传工程B.细胞工程C....

weixin_37988176的博客 358
上一篇: 计算机科学和Python编程导论(一) 计算机相关理论
下一篇: 计算机科学和Python编程导论(三) 一些简单的数值程序
Datawhale
Datawhale 领域专家: 物联网技术领域 领域专家: 物联网技术领域
博客等级 码龄8年 8900粉丝 1080原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值