一 前言
学习就是一个不断的自下而上,自上而下的过程。
前段时间,学着用python实现网站的数据爬取,隐约get到python的一些语法和用法,感觉就是语法不难,关键在于解决问题的思维。
这是需求驱动后的学习。接下来,就需要对python进行系统地了解。
很早之前搜知乎的时候,就搜到MOOC上的一门《python语言程序设计》课程,讲得很好,而且,我还下载了课件,溜了一遍,感觉就挺有趣的。
趁着有了实战经验,就把这门入门课刷了一遍。果然是门好课!很适合小白入门,并系统学习,整个教学过程循序渐进,深入浅出,提纲挈领,很有意思!
课程是北京理工大学嵩天老师的《python语言程序设计》课程,现在已经开了11次课了。课程每个小视频短则几分钟,最长也不超过20分钟,不容易劝退。每章讲解有复习回顾及小结,在平台python123上有每章的练习和测试,直接反馈结果,激发继续学下去的兴趣。
个人感觉,老师说话速度慢了些,调成了2倍速播放,然后,花了大约3天的时间,把所有的视频,课件,练习和测试都刷了一遍,感觉对python的了解更系统了!
趁热打铁,把每章的知识点和练习、测试再进行整理回顾一下。
以下内容均来自课程:《python语言程序设计》 及平台python123,感兴趣的看课程视频,亲自练习,效果更好~
二 知识点
1. 程序设计基本方法
- 计算机:是根据指令操作数据的设备;功能性(对数据的操作,表现为数据计算、输入输出处理和结果存储等);可编程性(根据一系列指令自动地、可预测地、准确地完成操作者的意图);
- 计算机的发展:按照摩尔定律,表现为指数方式;
- 摩尔定律(Moore’s Law):Intel公司创始人之一戈登·摩尔1965年提出;单位面积集成电路上可容纳晶体管的数量约每两年翻一番;CPU/GPU、内存、硬盘、电子产品价格等都遵循摩尔定律;
- 程序设计:是计算机可编程性的体现。
- 程序设计语言:是一种用于交互(交流)的人造语言;编程语言有超过600种,绝大部分都不再被使用;C语言诞生于1972年,是第一个被广泛使用的编程语言;Python语言诞生于1990年,是最流行最好用的编程语言;
- 编程语言的执行方式:包括编译和解释。编译:将源代码一次性转换成目标代码的过程(类似英文翻译);翻译:将源代码逐条转换成目标代码同时逐条运行的过程(类似实时的同声传译)。
- 两类编程语言:静态语言和脚本语言。静态语言:使用编译执行(C/C++语言,Java语言),程序运行速度更快;脚本语言:使用解释执行(Python、JavaScript、PHP),源代码维护灵活、跨多个操作系统平台。
- 程序的基本编写方法:I(输入)P(处理)O(输出);
- 求解计算问题的3个精简步骤:确定IPO(明确计算部分及功能边界);编写程序(将计算求解的设计变成现实);调试程序(确保程序按照正确逻辑能够正确运行);
2. Python开发环境配置
3. 实例1-温度转换
需求:摄氏度和华氏度两种温度体系的转换
Temp=input()
if Temp[-1] in ['C','c']:
f=eval(Temp[0:-1])*1.8+32
print('{:.2f}F'.format(f))
elif Temp[-1] in ['F','f']:
c=(eval(Temp[0:-1])-32)/1.8
print('{:.2f}C'.format(c))
else:
print('输入格式错误')
4. Python程序语法元素分析
-
程序的格式框架:
- 缩进:表达程序的格式框架。严格明确,缩进是语法的一部分,缩进不正确程序运行错误;所属关系,表达代码间包含和层次关系的唯一手段;长度一致,程序内一致即可,一般用4个空格或1个Tab。
-
注释:不被程序执行的辅助性说明信息。单行注释:以
#
开头,其后内容为注释。多行注释:以'''
(3个单引号)开头和结尾;
-
命名与保留字:
- 变量命名规则:大小写字母,数字,下划线和中文等字符及组合;注意:大小写敏感,首字符不能是数字,不与保留字相同;
-
保留字:被编程语言内部定义并保留使用的标识符。35个保留字,编程语言的基本单词,大小写敏感。
and
,as
,assert
,break
,class
,continue
,def
,elif
,else
,except
,finally
,for
,from
,if
,import
,in
,is
,lambda
,not
,or
,pass
,raise
,return
,try
,while
,with
,yield
,del
,global
,nonlocal
,True
,False
,None
,async
,await
。
-
数据类型:供计算机程序理解的数据形式。整数类型;列表类型;字符串类型。
- 字符串类型:由一对单引号或一对双引号表示;是字符的有序序列,可以对其中的字符进行索引。
- 字符串的序号:正向递增序号[0:]和反向递减序号[-1:]。
-
字符串的使用:使用
[]
获取字符串中一个或多个字符。索引:返回字符串中的单个字符,<字符串>[M]
。切片:返回字符串中的一段字符子串,<字符串>[M:N]
。 - 数字类型:整数和浮点数都是数字类型。
-
列表类型:由0个或多个数据组成的有序序列。使用
[]
表示,采用逗号,
分隔各元素;使用保留字in
判断一个元素是否在列表中。
-
语句与函数:
-
赋值语句:由赋值符号
=
构成的一行代码。 -
分支语句:由判断条件决定程序运行方向的语句。使用保留字
if
,elif
,else
构成条件判断的分支结构。每个保留字所在行最后存在一个冒号:
,语法的一部分。 -
函数:根据输入参数产生不同输出的功能过程。函数采用
<函数名>(<参数>)
方式使用。
-
赋值语句:由赋值符号
-
Python程序的输入输出:
- 输入函数input():用户输入的信息以字符串类型保存在变量中;
- 输出函数print():字符串类型的一对引号仅在程序内部使用,输出无引号;
- 评估函数eval():去掉参数最外侧引号并执行余下语句的函数。
三 练习
1. 实例1-温度转换
同 实例1-温度转换;
2. Hello World I
描述:这是学习每种程序设计语言的第一个实例。输出Hello World,注意大小写。
print('Hello World')
3. 数字形式转换 I
描述:获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。0到9对应的中文字符分别是:零一二三四五六七八九
zw='零一二三四五六七八九'
num=input()
for i in num:
print(zw[eval(i)],end='')
4. 温度转换 II
描述:温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度;
(3) 不考虑异常输入的问题,输出保留小数点后两位;
(4) 使用input()获得测试用例输入时,不要增加提示字符串
temp=input()
if temp[0] in ['C','c']:
f=eval(temp[1:])*1.8+32
print('F{:.2f}'.format(f))
elif temp[0] in ['F','f']:
c=(eval(temp[1:])-32)/1.8
print('C{:.2f}'.format(c))
else:
pass
5. 货币转换 I
描述:人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:
人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。
注意:
(1) 这是一个OJ题目,获得输入请使用input() ;
(2) 不提示输出格式错误,结果小数点后保留两位。
num=input()
if num[0:3] in ['RMB']:
d=1/6.78*eval(num[3:])
print('USD{:.2f}'.format(d))
elif num[0:3] in ['USD']:
r=6.78*eval(num[3:])
print('RMB{:.2f}'.format(r))
else:
print()
三 测试
1.选择题
-
Guido van Rossum正式对外发布Python版本的年份是:
A 2008 B 2002 C 1998 D 1991
Python成功了,所以早年的开发历史也受到关注,以下是Guido自述的启动阶段时间表:
December, 1989 Implementation started
1990 Internal releases at CWI
February 20, 1991 0.9.0 (released to alt.sources)
February, 1991 0.9.1
鉴于Internal release不算对外发布,普遍认为Python语言诞生于1991年。
-
以下关于Python语言中“缩进”说法正确的是:
A 缩进可以用在任何语句之后,表示语句间的包含关系
B 缩进统一为4个空格
C 缩进在程序中长度统一且强制使用
D 缩进是非强制的,仅为了提高代码可读性
Python语言的缩进只要统一即可,不一定是4个空格(尽管这是惯例)。
-
以下不属于IPO模型的是:
A Input B Program C Process D Output
IPO:Input Process Output
-
字符串是一个字符序列,给字符串s,以下表示s从右侧向左第三个字符的是:
A s[0:-3] B s[:-3] C s[3] D s[-3]
字符串有正向递增和反向递减两套序号体系
-
以下不是Python语言合法命名的是:
A MyGod5 B MyGod C _MyGod D 5MyGod
合法命名的首字符不能是数字。
-
在Python中,用于获取用户输入的函数是:
A get() B eval() C print() D input()
get()不是Python内置函数,获得用户输入只有一种方式:input()。
-
下面不属于Python保留字的是:
A elif B type C import D def
type不是Python保留字,而是内置函数 type()。
-
以下不是Python数据类型的是:
A 整数 B 列表 C 字符串 D 实数
实数是数学中的概念,在Python中对应浮点数。
-
哪个选项给出的保留字不直接用于表示分支结构?
A else B elif C if D in
if-elif-else是分支表达,in用来进行成员判断。
-
利用print()格式化输出,哪个选项用于控制浮点数的小数点后两位输出?
A {:.2} B {:.2f} C {.2f} D {.2}
:.2f 哪一个都不能少
2.程序设计题
- Hello World的条件输出
描述:获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:
如果输入值是0,直接输出"Hello World"
如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)
如果输入值小于0,以垂直方式输出"Hello World"
num=input()
op='Hello World'
if eval(num)==0:
print(op)
elif eval(num)>0:
s=''
for i in range(len(op)):
if (i+1)%2!=0:
s=s+op[i]
if len(op)==i+1:
print(s)
else:
s=s+op[i]
print(s)
s=''
else:
for i in op:
print(i)
- 数值运算
描述:获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
s=input()
result=eval(s.replace(' ',''))
print('{:.2f}'.format(result))
【笔记】《python语言程序设计》—Python基本语法元素