Python语言程序设计基础
第二章 Python程序示例解析
部分截图来自 北京理工大学 嵩天 的python基础设计课程的ppt,仅做个人笔记使用,特此声明。
编程解决问题的步骤
分析问题:分析问题的计算部分,想清楚
划分边界:划分问题的功能边界,规划IPO
设计算法:设计问题的求解算法,关注算法
编写程序:编写问题的计算程序,编程序
调试测试:调试程序使正确运行,运行调试
升级维护:适应问题的升级维护,更新完善
代码示例1——温度转换
温度转换
需求
两种温度体系的转换
摄氏度转为华氏度
华氏度转为摄氏度
问题分析
划分边界
输入:带华氏或摄氏标志的温度值
输出:根据温度标志选择适当的温度转换算法
输入输出格式设置
标识放在温度后面,F标识华氏度,C表示摄氏度
设计算法
\(C=(F-32)/1.8\)
\(F=C*1.8+32\)
代码
#实例代码1.1 温度转换
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))
举一反三
温度数值与温度标识之间关系的设计可以改变
标识放在温度数值之前
TempStr = input("请输入带有符号的温度值")
if TempStr[0] in ['F','f']:
C=(eval(TempStr[1:])-32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[0] in ['C','c']:
F = 1.8*eval(TempStr[1:])+32
print("转换后的温度是{:.2f}F".format(F))
货币转换、长度转换、重量转换、面积转换......
强缩进
python 与C++,java在代码块的划分是不一样的,C++,java使用{}来区分代码块。而python使用缩进来区分代码块,增强了代码的可读性
注释
单行注释:单行注释以#开头
多行注释:多行注释以‘’’(3个单引号)开头和结尾
命名与保留字
变量命名:
python语言允许采用大写字母,小写字母、数字、下划线_ 和汉字等字符及其组合对变量进行命名。
但名字的首字母不能是数字,中间不能出现空格。
标识符对大小写敏感
变量名不能与python的保留字相同
保留字
def
import
from
as
False
True
None
if
elif
else
async
for
while
break
continue
try
except
finally
return
and
not
or
is
assert
with
raise
in
del
global
nonlocal
yiled
pass
class
lambda
await
字符串
创建,python中使用引号‘’创建字符串,不支持单字符类型,单字符在python中也是作为一个字符串来使用
访问字符,python使用方括号[]来访问字符串
正向递增序号,最左侧字符为0,向右递增,最右侧字符序号为L-1
反向递减序号,最右侧字符序号为-1,想做依次递减,最左侧字符序号为-L
区间访问(切片),采用[N:M]格式,表示字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正序和逆序序号
字符串连接 +
判断字符串是否包含给定字符 in not in
格式化输出 类似于C语言中的sprintf函数 %f 格式化浮点数字,可指定小数后的精度
列表 [ ]
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
分支
使用保留字 if elif else
每个保留字所在行最后存在一个冒号(😃,语法的一部分。冒号及后续缩进用来表示后续语句与条件的所属关系
输入输出 input print
input():从控制台获得用户输入的函数
print():以字符形式向控制台输出结果的函数
eval()
eval() 能够以Python表达式的方式解析并执行字符串,并将结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。
作用:
处理数字
单引号、双引号,eval()函数都能将其解释为int类型;三引号解析为str类型。
处理字符串类型的字符串
对于eval()括号中的字符串(非数字),如果字符串带的是双引号或单引号都会引起NameError,这是因为eval()函数在处理字符串时会去掉两个引号。正确应该使用一个单引号包含一个双引号组成的三引号来包含字符串。
input 和 eval 结合使用
获得用户输入的数字
value = eval ( input ( "请输入数字:") )
获得用户输入的字符串
Str = eval ( ' input ("请输入字符串") ')
思考与练习
2.6 回声程序
问题描述:
请用一行代码·编写一个回声程序,将用户输入的内容直接打印出来
问题分析:
获取用户输入:input函数;输出:print函数
代码:
print(input())
2.7 试想一下,为什么Python的命名不能以数字开头
这是为了区分变量和常量。在变量命名可以以数字开头的情况下,无法区分以下内容是定义的变量还是常量:01,2E10。这会在编译的时候造成二义性。所以规定在命名变量的时候不能以数字开头。
其实,编译器或者解释器都会有一个词法分析器。词法分析器在判断一个单词是否以数字开头,如果是以数字开头则把他当作数字常量处理,否则当作普通单词处理。这样子可以提高词法分析器的效率
代码示例2——Python蟒蛇绘制
#示例代码2.1
import turtle
turtle.setup(650,350,200,200)
turtle.penup() #笔抬起
turtle.fd(-250)
turtle.pendown() #笔落下
turtle.pensize(25) #笔的宽度
turtle.pencolor("purple") #笔的颜色
turtle.seth(-40) #前进方向
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)