计算机科学和Python编程导论(二 ) Python简介
基本概念
1. 编程语言的分类
低级编程与高级编程
:二者之间的区别是,编写程序时,我们是使用机器层次的指令和数据对象(底层操作),还是使用语言设计者提供的更为抽象的操作(图形用户界面,UI)。
通用性与专注于某一应用领域
:指编程语言中的基本操作是广泛适用的还是只针对某个领域,例如SQL。
解释运行与编译运行
:指程序员编写的指令序列,即源代码是直接执行(通过解释器,使用解释型语言编写的程序更易调试,因为解释器可以给出与源代码相关的错误信息。),还是要先转换成机器层次的基础操作序列。(通过编译器,编译型语言(如,java)编写的程序速度更快,占用的空间也更少。)
2. Python 基本元素
python中对象
:对象分为标量对象(不可再分)和非标量对象(有内部结构,可再分)。Python有以下4类标量对象:
- int:表示整数。
- float:表示实数。
- bool:表示布尔值True和False。
- None:这个类型只有一个值。
操作符
:对象和操作符可以组成表达式,每个表达式都相当于某种类型的对象,我们称其为表达式的值。
int类型和float类型支持的操作符
:
- i + j:i和j的和。
- i - j:表示i减j。
- i * j:i和j的积。
- i // j:表示整数除法。只返回商,不返回余数。
- i / j:表示i除以j。
- i % j:表示int i除以int j的余数。通常读作i mod j,是i modulo j的缩写。
- i ** j:表示i的j次方。如果i和j都是int类型,结果也是int类型。
注:如果i和j都是int类型,结果也是int类型。如果其中任意一个是float类型,那么结果就是float类型。
比较运算符
:包括:==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)和<=(小于等于)。
bool类型上的基本操作符
:and、or和not
- a and b:当a和b都为True时,值为True,否则为False。
- a or b:当a和b至少有一个为True时,值为True,否则为False。
- not a:如果a为False,值为True;如果a为True,值为False。
变量
:在Python中,变量仅是名称,没有其他意义。赋值语句将=左边的名称与=右边的表达式所表示的对象关联起来,一个对象可以有一个或多个名称与之关联,也可以不关联任何名称。
多重赋值
:Python支持多重赋值。如:x, y = 2, 3
变量名
:将程序写得清晰易懂极其重要,恰当地选择变量名称在增强程序可读性方面扮演了重要角色。
- 在Python中,变量名可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字符_。
- Python变量名是大小写敏感的,如Julie和julie就是不同的变量名。最后,Python中还有少量的保留字(有时称为关键字),它们有专门的意义,不能用作变量名。
- 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. 程序分支
最简单的分支型程序是条件语句
程序运行时间
:
- 假定每行代码都需要以单位时间运行,那么有n行代码的直线型程序就需要n个单位时间。那么有n行代码的分支型程序呢?它运行的时间可能会少于n个单位时间,但绝不会超过n个单位时间,因为每行代码至多运行一次。
- 如果一个程序运行的最长时间是由程序长度决定的,那么可以称为以常数时间运行。这并不意味着它每次运行都执行相同的步骤,而意味着存在一个常数k,使得这个程序肯定会在k个步骤之内结束运行。其中隐含的意义是,这种程序的运行时间并不随着程序输入量的增加而增加。
4. 字符串和输入
str类型的对象
:用来表示由字符组成的字符串。str类型的字面量可以用单引号或双引号表示,如’abc’或”abc”。
重载
:即根据应用其上的对象类型的不同,它的意义也不同。操作符+存在重载的情形,例如:
- 应用于两个数值对象时,它表示相加;
- 应用于两个字符串时,它表示连接。
字符串
:是Python中的序列类型之一。所有序列类型都可以执行以下操作:
- 可以使用len函数求出字符串的长度。例如,len(‘abc’)的值是3。
- 可以使用索引从字符串提取单个字符。例如,在解释器中输入’abc’[0]会显示字符串’a’。
- 可以使用切片操作从字符串提取任意长度的子串。如果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: ')
字符串进行类型转换
:只要字符串中的值是某种类型的有效字面量,就可以对字符串进行类型转换。
例如,int(‘3’) * 4的值是12。
当一个float值被转换成int值时,数值是被截断的(不是四舍五入)。
例如,int(3.9)的值是int 3。
Unicode编码的由来
:
字符串存在编码问题。
- 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)(2的8次幂等于256,即8个位置每个位置可以选择0或者1,总共有256种可能,从0开始就到了255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
- 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
- 类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
- 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简介相关推荐
- python交互式程序设计导论答案第五周_学堂在线_计算机科学与Python编程导论_章节测试答案...
学堂在线_计算机科学与Python编程导论_章节测试答案 更多相关问题 素描的三种表现形式是:(). 运行下列程序:Private Sub form_Click()For i = 1 To 2x = ...
- 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...
- 计算机编程导论python程序设计答案-学堂云_计算机科学与Python编程导论_作业课后答案...
学堂云_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的.() 基金经理主要依据股票投资价值报告来决定实际的投资 ...
- 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 ...
- Python 编程导论 Chapter 4 —— 函数、作用域与抽象
typora-copy-images-to: Risk Management and Financial Institution typora-copy-images-to: Python 编程导论 ...
- python编程入门指南-Python编程初学者指南 PDF扫描版[87MB]
Python编程初学者指南 内容简介: 如果你刚刚接触Python编程,而且正在寻找一本实用的教程,那么这本书为你量身打造.通过阅读本书,你不仅会学到很多实用的Python编程知识,还将懂得如何在实际 ...
- 山东python编程培训,Python进入山东省小学教材了
根据最近火爆朋友圈的一则消息,Python已经进入山东省小学教材.Python这几年的火热,离不开人工智能和机器学习. 已经没有什么能够阻挡Python了.根据国务院<新一代人工智能发展规划的通 ...
- 大M法的python编程求解和python包求解
大M法的python编程求解和python包求解 一.大M算法的求解步骤讲解 二.python编程求解 三.利用python包scipy的优化包optimize 四.用excel求解 五.分析结果 一 ...
- 青少年python编程入门书-青少年Python编程入门——图解Python
商品详情 书名:青少年Python编程入门--图解Python 定价:69.8 ISBN:9787121395543 作者:傅骞 版次:第1版 出版时间:2020-09 内容提要: 本书介绍pytho ...
最新文章
- 自动售货机编程_Rosmaro中基于视觉自动机的编程简介
- ROS学习(八):ROS URDF-transmission
- sscanf简单用法
- spring与memcache的整合
- VS中怎样对C#项目进行单元测试
- TypeError: 'numpy.ndarray' object is not callable
- 原版英文书籍《Linux命令行》阅读记录6 | 重定向
- 使用 custom element 创建自定义元素
- matlab中的 complete,Complete-collection-of-algorithm
- 服务器小白-MYSQL基础安装配置
- 什么是UML?分哪两类?
- 使用windows 10 安装中文版语言
- IAR工程适配GD32芯片
- 控制Tello无人机扫描条形码
- IOS通用链接处理(Universal Links),apple-app-site-association
- 为了以后小孩的成长,留在大城市好还是回到老家三线城市好? 从一线城市滚回二线三线城市的筒子们,你们重新找到新的生活经历了多久? 年轻人逃离一线城市 外地人生存环境愈发严峻...
- 判断单链表是否有环 两链表是否相交
- 航空工装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 商务投标的“内卷化”行为,竟无言反驳
- STC51单片机23——T2定时器的使用