1.Python基本语法元素
1.1 程序设计基本方法
计算机与程序设计
-
计算机的概念
满足以下两点
-
功能性(对数据的操作,表现为数据计算、输入输出处理和结果存储等)
-
可编程性(根据一系列指令自动地、可预测地、准确地完成操作者的意图)
-
计算机的发展
摩尔定律
计算机的发展参照摩尔定律
它名为定律,实为预测法则:单位面积集成电路上可容纳晶体管的数量约每两年翻一番(指数级别)(CPU\GPU等由晶体管组成,也满足)
-
程序设计(即编程)
程序设计语言是一种用于交互(交流)的人造语言
它比自然语言(如中文)简单、严谨、精确
用于人与计算机的交互
编译和解释
-
编程语言的执行方式
-
源代码:人类可读的,按某种编程语言编写的程序(如:ans=a+b;)
-
目标代码:计算机可直接执行,一般人不可读(如:11010010 00111011)
-
-
编译:将源代码一次性转换为目标代码的过程
源代码->编译器->目标代码->程序执行(输入->输出)
-
解释:将源代码逐条转换成目标代码同时逐条运行的过程
源代码、程序输入依次进行->解释器->输出
(因此编译后不需源代码,解释需要)
-
静态语言和脚本语言(根据执行方式不同划分)
-
静态语言:使用编译执行的编程语言(如C++/Java)
一次生成目标代码,优化充分,程序快
-
脚本语言:解释执行(如Python/JavaScript/PHP)
维护灵活、跨多平台运行
-
其实语言本身没有编译和解释的区分,就像C语言主要是编译后执行,有人写了它的解释器,Python主要是解释执行,有人写了它的编译器,解释和编译只是某种语言偏好的执行方式
程序的基本编写方法:IPO
-
理解IPO
Input Process Output
-
计算机只(辅助)解决问题的计算部分
-
编程解决问题的步骤
-
分析问题:分析计算部分
-
划分边界:规划IPO
-
设计算法
-
编写程序
-
调试测试
-
升级维护
-
计算机编程
-
计算思维
是区别于逻辑思维(数学为代表)和实证思维(物理为代表)的体现抽象交互关系、自动化执行的思维模式
-
编程能**带来乐趣**、提高效率、带来就业
1.2 Python开发环境配置
Python语言概述
- 是一个由编程牛人领导设计并开发的编程语言
- 是一个有开发、开源精神的编程语言
- 应用于火星探测、搜索引擎、应力波分析等众多领域
Python语言Windows系统开发环境
在安装时勾选add python3.x to path(即把python命令添加到环境变量)
Python程序编写与运行
-
两种编写方式
-
交互式
对每个输入语句即时运行结果,适合语法练习
即直接用IDLE编写
-
文件式
批量执行一组语句并一次性得出结果,编程主要方式
即在IDLE里面新建文件并保存为x.py后运行
-
-
实例1:圆面积的计算
r=25 area=3.1415*r*r print(area) print("{:.2f}".format(area))
-
实例2:同切圆绘制
import turtle turtle.pensize(2) turtle.circle(10) turtle.circle(40) turtle.circle(80) turtle.circle(160)
-
实例3:五角星绘制
from turtle import * color('red','red') begin_fill() for i in range(5): fd(200) rt(144) end_fill() done()
1.3 实例1:温度转换
问题分析
转换摄氏度和华氏度
-
计算部分的理解和确定
- 理解1:直接将温度值进行转换
- 理解2:将温度信息发布的声音或图像形式进行理解和转换
-
理解3:监控或爬取温度信息发布渠道,实时获取并转换温度值
- 入门采取理解1
-
划分边界
- 输入为带摄氏或华氏标志的温度值
- 处理为根据标志选择温度转换算法
- 输入输出格式设置:F和C
-
设计算法
- C=(F-32)/1.8
- F=C*1.8+32
实例编写
#TempConvert.py
TempStr=input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
C=(eval(TempStr[0:-1])-32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in['C','c']:
F=1.8*eval(TempStr[0:-1])+32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
举一反三
- Python语法元素理解
- 输入输出的改变
- 计算问题的扩展(做类似问题)
1.4 Python程序语法元素分析
程序的格式框架
-
代码高亮
-
缩进
-
表达程序的格式框架,是语法的一部分
- 严格明确
- 所属关系
- 长度一致
-
-
注释
- 单行注释 #开头
- 多行注释 ‘'’开头’'’结尾
命名与保留字
-
变量:用于保存和表示数据的占位符号
-
变量命名:关联标识符的过程
- 规则:大小写字母、数字、下划线和汉字等字符及组合
- 注意:大小写敏感、首字符不能是数字、不与保留字相同
-
保留字(关键字):被编程语言内部定义并保留使用的标识符
and elif import raise global as else in return nonlocal assert except is try True break finally lambda while False class for not with None continue from or yield def if pass del
数据类型
-
整数、字符串、浮点数、列表
-
10,011,101
- 整数:10011101
- 字符串:”10,011,101”
- 列表:[10,011,101]
-
字符串:由0个或多个字符组成的有序字符序列
-
在两侧由一对单引号或一对双引号(没有区别)
-
字符串中的编号从0开始,即一般认为的第一个字符即为第0个字符
-
正向递增序号和反向递减序号,举例
"请输入带有符号的温度值:" 正向递增序号从第一个字符开始由0递增 反向递减序号从最后一个字符开始由-1递减 其中"符"是正向递增序号中的第5个字符 也是反向递减序号中的第-7个字符
-
字符串的索引
返回字符串中单个字符
如:
"请输入带有符号的温度值:"[0] TempStr[-1]
-
字符串的切片
如:
"请输入带有符号的温度值:"[1:3]包括第1、2个字符 TempStr[0:-1]不包括最后一个字符
-
-
数字类型
- 整数:数学中的整数
- 浮点数:数学中的实数,带有小数部分
-
列表
-
使用[]表示,采用,分隔各元素
如:
['F','f']表示两个元素'F'和'f'
-
使用 in 判断一个元素是否在列表中
如:
TempStr[-1] in ['C','c'] 中如果TempStr的最后一个字符为C或者c则其返回值为True 否则为False
-
语句与函数
-
赋值语句:由赋值符号(单一等号)构成的一行代码
-
分支语句
如果条件成立则执行:后部分语句
如:
if ...: ... ... elif ...: ... ... else: ...
-
函数:根据输入参数产生不同输出的功能过程
如input(“…”),print(“…”)
采用<函数名>(<参数>)的方式使用参数>函数名>
Python程序的输入输出
-
input():从控制台获得信息输入的函数
- <变量>=input("提示信息字符串") 变量>
-
print():以字符形式向控制台输出结果的函数
-
print(<拟输出字符串或字符串变量>)拟输出字符串或字符串变量>
-
格式化:如
print("转换后的温度是{:.2f}C".format(C)) {}表示槽,后续变量填充到槽中 {:.2f}表示将变量C填充到这个位置时取小数点后两位
-
-
eval():简单称为评估函数,去掉参数最外侧引号并执行余下语句的函数
-
eval(<字符串或字符串变量>)字符串或字符串变量>
-
如
>>>eval(“1”)
1
>>>eval(“1+2”)
3
>>>eval(‘ “1+2” ‘)
‘1+2’
>>>eval(‘print(“Hello”)’)
Hello
-
“温度转换”代码分析
#TempConvert.py
TempStr=input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
C=(eval(TempStr[0:-1])-32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in['C','c']:
F=1.8*eval(TempStr[0:-1])+32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
练习
-
实例1: 温度转换
描述
这是”实例”题,与课上讲解实例相同,请作答检验学习效果。
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;
(2) 输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指华氏度87.65度;
(3) 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
## 输入
示例1:12.34C
示例2:87.65F
## 输出
示例1:54.21F
示例2:30.92C
s=input()
if s[-1] in ['F','f']:
c=(eval(s[0:-1])-32)/1.8
print("{:.2f}C".format(c))
elif s[-1] in ['C','c']:
f=eval(s[0:-1])*1.8+32
print("{:.2f}F".format(f))
else:
print("输入格式错误")
-
Hello World I
描述
这是学习每种程序设计语言的第一个实例。
输出Hello World,注意大小写。
## 输入
无
## 输出
Hello World
print("Hello World")
-
数字形式转换 I
描述
获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
0到9对应的中文字符分别是:零一二三四五六七八九
输入输出示例
输入 输出 示例 1 123 9876543210
一二三 九八七六五四三二一零
s=input() for c in s: if c=='0':print('零',end="") if c=='1':print('一', end="") if c=='2':print('二', end="") if c=='3':print('三', end="") if c=='4':print('四', end="") if c=='5':print('五', end="") if c=='6':print('六', end="") if c=='7':print('七', end="") if c=='8':print('八', end="") if c=='9':print('九', end="") 或者 template = "零一二三四五六七八九" s = input() for c in s: print(template[eval(c)], end="") print()中增加end=""参数表示输出后不增加换行,多个print()可以连续输出。
-
温度转换 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()获得测试用例输入时,不要增加提示字符串。
## 输入
示例1:C12.34
示例2:F87.65
## 输出
示例1:F54.21
示例2:C30.92
s=input()
if s[0] in ['F','f']:
c=(eval(s[1:])-32)/1.8
print("C{:.2f}".format(c))
elif s[0] in ['C','c']:
f=eval(s[1:])*1.8+32
print("F{:.2f}".format(f))
else:
print("输入格式错误")
或者
#TempConvert.py
TempStr = input()
if TempStr[0] in ['F']:
C = (eval(TempStr[1:]) - 32)/1.8
print("C{:.2f}".format(C))
elif TempStr[0] in ['C']:
F = 1.8*eval(TempStr[1:]) + 32
print("F{:.2f}".format(F))
else:
print() #不输入任何错误提示
这个实例扩展自实例1,请注意以下三点:
(1) 将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;
(2) 采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00;
(3) TempStr[1:]表示字符串除首字符外的所有字符。
-
货币转换 I
描述
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:
人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。
注意:
(1) 这是一个OJ题目,获得输入请使用input() ;
(2) 不提示输出格式错误,结果小数点后保留两位。
## 输入
示例1:RMB123
示例2:USD20
## 输出
示例1:USD18.14
示例2:RMB135.60
s=input()
if s[0:3]=="RMB":print("USD{:.2f}".format(eval(s[3:])/6.78))
elif s[0:3]=="USD":print("RMB{:.2f}".format(eval(s[3:])*6.78))
else:print("")
或者
CurStr = input()
if CurStr[:3] == "RMB":
print("USD{:.2f}".format(eval(CurStr[3:])/6.78))
elif CurStr[:3] in ['USD']:
print("RMB{:.2f}".format(eval(CurStr[3:])*6.78))
这个代码是实例1的一个扩展,注意以下3点:
(1) eval()函数将字符串转换成数字,不能省略;
(2) == 表示 "等于",in 表示成员包含,对于这个题目,由于只允许输入采用全大写方式,两种方法均可;
(3) :.2f输出小数点后两位。
测验
单项选择题
-
Guido van Rossum正式对外发布Python版本的年份是:
A. 1998 B.2002 C.1991 D.2008
C
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. 缩进在程序中长度统一且强制使用
C. 缩进统一为4个空格
D. 缩进是非强制的,仅为了提高代码可读性
D
Python语言的缩进只要统一即可,不一定是4个空格(尽管这是惯例)。
-
以下不属于IPO模型的是:
A. Process
B. Output
C. Input
D. Program
D
IPO:Input Process Output
-
字符串是一个字符序列,给字符串s,以下表示s从右侧向左第三个字符的是:
A. s[-3]
B. s[3]
C. s[0:-3]
D. s[:-3]
A
字符串有正向递增和反向递减两套序号体系
-
以下不是Python语言合法命名的是:
A. MyGod
B. 5MyGod
C. MyGod5
D. _MyGod_
B
合法命名的首字符不能是数字。
-
在Python中,用于获取用户输入的函数是:
A. eval()
B. print()
C. input()
D. get()
C
get()不是Python内置函数,获得用户输入只有一种方式:input()。
-
下面不属于Python保留字的是:
A. import
B. type
C. def
D. elif
B
type不是Python保留字,而是内置函数 type()。
-
以下不是Python数据类型的是:
A. 字符串
B. 整数
C. 实数
D. 列表
C
实数是数学中的概念,在Python中对应浮点数。
-
哪个选项给出的保留字不直接用于表示分支结构?
A. elif
B. else
C. in
D. if
C
if-elif-else是分支表达,in用来进行成员判断。
-
利用print()格式化输出,哪个选项用于控制浮点数的小数点后两位输出?
A. {:.2f}
B. {.2f}
C. {.2}
D. {:.2}
A
:.2f 哪一个都不能少
程序设计题
-
Hello World的条件输出
描述
获得用户输入的一个整数,参考该整数值,打印输出”Hello World”,要求:
如果输入值是0,直接输出”Hello World”
如果输入值大于0,以两个字符一行方式输出”Hello World”(空格也是字符)
如果输入值小于0,以垂直方式输出”Hello World”
输入输出示例
输入 输出 示例 1 0
Hello World
a=input() if eval(a)==0 : print("Hello World") elif eval(a)>0 : print("He\nll\no \nWo\nrl\nd") elif eval(a)<0 : print("H\ne\nl\nl\no\n \nW\no\nr\nl\nd") 或者 参考代码如下: n = eval(input()) if n == 0: print("Hello World") elif n > 0: print("He\nll\no \nWo\nrl\nd") else: for c in "Hello World": print(c) 答案可以有很多种写法。
-
数值运算
描述
获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
输入输出示例
输入 输出 示例 1 10 + 100 1 / 20
110.00 0.05
s=input() print("{:.2f}".format(eval(s))) 或者 参考答案如下: s = input() print("{:.2f}".format(eval(s))) 体会eval()函数的作用,在编程中用处很大。