基本概念

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 iprint('没有奇数')
# 解法3
def odd_max_input2(x,y,z):    a=[x,y,z]max =0for i in a:if i%2==1:if i > max:max = iif 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+=1if i%2==1:print('最大的奇数是{}'.format(i))breakelif 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))

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

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

    学堂在线_计算机科学与Python编程导论_章节测试答案 更多相关问题 素描的三种表现形式是:(). 运行下列程序:Private Sub form_Click()For i = 1 To 2x = ...

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

    学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...

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

    学堂云_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的.() 基金经理主要依据股票投资价值报告来决定实际的投资 ...

  4. python计算机语言论坛,自学IT吧论坛国外大神-计算机科学及 Python 编程导论-中文字幕编程语言资源天地 - www.zxit8.com...

    ( W4 V& M+ h- m$ X( d! c' s0 h. M0 l; \' A# i+ I1 O- U1 C* G 0 m# M& o1 }4 g! c# X) }$ [% JI ...

  5. Python 编程导论 Chapter 4 —— 函数、作用域与抽象

    typora-copy-images-to: Risk Management and Financial Institution typora-copy-images-to: Python 编程导论 ...

  6. python编程入门指南-Python编程初学者指南 PDF扫描版[87MB]

    Python编程初学者指南 内容简介: 如果你刚刚接触Python编程,而且正在寻找一本实用的教程,那么这本书为你量身打造.通过阅读本书,你不仅会学到很多实用的Python编程知识,还将懂得如何在实际 ...

  7. 山东python编程培训,Python进入山东省小学教材了

    根据最近火爆朋友圈的一则消息,Python已经进入山东省小学教材.Python这几年的火热,离不开人工智能和机器学习. 已经没有什么能够阻挡Python了.根据国务院<新一代人工智能发展规划的通 ...

  8. 大M法的python编程求解和python包求解

    大M法的python编程求解和python包求解 一.大M算法的求解步骤讲解 二.python编程求解 三.利用python包scipy的优化包optimize 四.用excel求解 五.分析结果 一 ...

  9. 青少年python编程入门书-青少年Python编程入门——图解Python

    商品详情 书名:青少年Python编程入门--图解Python 定价:69.8 ISBN:9787121395543 作者:傅骞 版次:第1版 出版时间:2020-09 内容提要: 本书介绍pytho ...

最新文章

  1. 自动售货机编程_Rosmaro中基于视觉自动机的编程简介
  2. ROS学习(八):ROS URDF-transmission
  3. sscanf简单用法
  4. spring与memcache的整合
  5. VS中怎样对C#项目进行单元测试
  6. TypeError: 'numpy.ndarray' object is not callable
  7. 原版英文书籍《Linux命令行》阅读记录6 | 重定向
  8. 使用 custom element 创建自定义元素
  9. matlab中的 complete,Complete-collection-of-algorithm
  10. 服务器小白-MYSQL基础安装配置
  11. 什么是UML?分哪两类?
  12. 使用windows 10 安装中文版语言
  13. IAR工程适配GD32芯片
  14. 控制Tello无人机扫描条形码
  15. IOS通用链接处理(Universal Links),apple-app-site-association
  16. 为了以后小孩的成长,留在大城市好还是回到老家三线城市好? 从一线城市滚回二线三线城市的筒子们,你们重新找到新的生活经历了多久? 年轻人逃离一线城市 外地人生存环境愈发严峻...
  17. 判断单链表是否有环 两链表是否相交
  18. 航空工装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 商务投标的“内卷化”行为,竟无言反驳
  20. STC51单片机23——T2定时器的使用

热门文章

  1. 随机生成6位图片验证码
  2. 深入研究敏捷的成功因素
  3. 别人总结的批处理技巧
  4. Oracle集合操作
  5. 徐韬:CCF - 个贷违约预测Baseline
  6. 【青少年编程】【蓝桥杯】绘制扇子
  7. 技术图文:如何利用 Python 做一个简单的定时器类?
  8. 技术图文:如何利用C#实现Huffman编码?
  9. 【怎样写代码】工厂三兄弟之抽象工厂模式(一):问题案例
  10. TPAMI 2021 | 深度赋智AutoDL系列竞赛世界冠军方案首次公开