python程序-30分钟学会用Python编写简单程序

原标题:30分钟学会用Python编写简单程序

参与文末每日话题讨论,赠送异步新书

506a6e19b969487a88de2f9223939743.jpeg异步图书君

学习目标

知道有序的软件开发过程的步骤。

了解遵循输入、处理、输出(IPO)模式的程序,并能够以简单的方式修改它们。

了解构成有效Python标识符和表达式的规则。

能够理解和编写Python语句,将信息输出到屏幕,为变量赋值,获取通过键盘输入的信息,并执行计数循环。 软件开发过程

运行已经编写的程序很容易。较难的部分实际上是先得到一个程序。计算机是非常实在的,必须告诉它们要做什么,直至最后的细节。编写大型程序是一项艰巨的挑战。如果没有系统的方法,几乎是不可能的。

创建程序的过程通常被分成几个阶段,依据是每个阶段中产生的信息。简而言之,你应该做以下工作。

分析问题 确定要解决的问题是什么。尝试尽可能多地了解它。除非真的知道问题是什么,否则就不能开始解决它。

确定规格说明 准确描述程序将做什么。此时,你不必担心程序"怎么做”,而是要确定它"做什么”。对于简单程序,这包括仔细描述程序的输入和输出是什么以及它们的相互关系。

创建设计 规划程序的总体结构。这是描述程序怎么做的地方。主要任务是设计算法来满足规格说明。

实现设计 将设计翻译成计算机语言并放入计算机。在本书中,我们将算法实现为Python程序。

测试/调试程序 试用你的程序,看看它是否按预期工作。如果有任何错误(通常称为"缺陷”),那么你应该回去修复它们。定位和修复错误的过程称为"调试”程序。在调试阶段,你的目标是找到错误,所以应该尝试你能想到的"打破”程序的一切可能。记住这句老格言:"没有什么能防住人犯傻,因为傻子太聪明了。”

维护程序 继续根据用户的需求开发该程序。大多数程序从来没有真正完成,它们在多年的使用中不断演进。 示例程序:温度转换器

让我们通过一个真实世界的简单例子,来体验软件开发过程的步骤,其中涉及一个虚构的计算机科学学生Susan Computewell。

Susan正在德国学习一年。她对语言没有任何问题,因为她能流利地使用许多语言(包括Python)。她的问题是,很难在早上弄清楚温度从而知道当天该穿什么衣服。Susan每天早上听天气报告,但温度以摄氏度给出,她习惯了华氏度。

幸运的是,Susan有办法解决这个问题。作为计算机科学专业的学生,她去任何地方总是带着她的笔记本计算机。她认为计算机程序可能会帮助她。

Susan开始分析她的问题。在这个例子中,问题很清楚:无线电广播员用摄氏度报气温,但Susan只能理解华氏温度。

接下来,Susan考虑可能帮助她的程序的规格说明。输入应该是什么?她决定程序将允许她输入摄氏温度。输出呢?程序将显示转换后的华氏温度。现在她需要指定输出与输入的确切关系。

苏珊快速估算了一下。她知道0摄氏度(冰点)等于32华氏度,100摄氏度(沸点)等于212华氏度。有了这个信息,她计算出华氏度与摄氏度的比率为(212−32)/(100−0) = (180/100) = 9/5。使用F表示华氏温度,C表示摄氏温度,转换公式的形式为F = (9/5)C + k,其中k为某个常数。代入0和32分别作为C和F,Susan立即得到k = 32。所以最后的关系公式是F = (9/5)C + 32。这作为规格说明似乎足够了。

请注意,这描述了能够解决这个问题的许多可能程序中的一个。如果Susan有人工智能(AI)领域的背景,她可能会考虑写一个程序,用语音识别算法实际收听收音机播音员,获得当前的温度。对于输出,她可以让计算机控制机器人进入她的衣柜,并根据转换后的温度选择适当的服装。这将是一个更有野心的项目,一点也不夸张!

当然,机器人程序也会解决问题分析中识别的问题。规格说明的目的,是准确地决定这个特定的程序要做什么,从而解决一个问题。Susan知道,最好是先弄清楚她希望构建什么,而不是一头钻进去开始编程。

Susan现在准备为她的问题设计一个算法。她马上意识到这是一个简单算法,遵循标准模式"输入、处理、输出”(IPO)。她的程序将提示用户输入一些信息(摄氏温度),处理它,产生华氏温度,然后在计算机屏幕上显示结果,作为输出。

Susan可以用一种计算机语言来写她的算法。然而,正式将它写出来需要相当的精度,这常常会扼杀开发算法的创造性过程。作为替代,她用"伪代码”编写算法。伪代码只是精确的英语,描述了程序做的事。这意味着既可以交流算法,又不必让大脑承担额外的开销,正确写出某种特定编程语言的细节。

下面是Susan的完整算法:

输入摄氏度温度(称为celsius)计算华氏度为(9/5)celsius + 32输出华氏度

下一步是将此设计转换为Python程序。这很直接,因为算法的每一行都变成了相应的Python代码行。

# convert.py# A program to convert Celsius temps to Fahrenheit# by: Susan Computewelldef main(): celsius = eval(input(What is the Celsius temperature?)) fahrenheit = 9/5 * celsius + 32 print(The temperature is, fahrenheit, degrees Fahrenheit.)main()

看看你是否能弄清楚这个程序的每一行做了什么。如果一些部分不是很清楚,也不要担心,下一节将详细讨论。

完成程序后,Susan测试它,看看它工作得如何。她使用她知道正确答案的输入。下面是两个测试的输出:

What is the Celsius temperature? 0The temperature is 32.0 degrees Fahrenheit.What is the Celsius temperature? 100The temperature is 212.0 degrees Fahrenheit.

你可以看到,Susan用值0和100来测试她的程序。看起来不错,她对解决方案感到满意。她特别高兴的是,似乎没有必要调试(这很不寻常)。 程序要素

既然已经知道了编程过程,你就"几乎”准备好开始自己编写程序了。在此之前,你需要更完整的基础,了解Python的基本知识。接下来的几节将讨论一些技术细节,这对编写正确程序至关重要。这种材料看起来有点乏味,但你必须掌握这些基础,然后再进入更有趣的领域。 1 名称

你已经看到,名称是编程的重要组成部分。我们为模块命名(例如convert),也为模块中的函数命名(例如main)。变量用于为值命名(例如celsius和fahrenheit)。从技术上讲,所有这些名称都称为"标识符”。Python对标识符的构成有一些规则。每个标识符必须以字母或下划线("_”字符)开头,后跟字母、数字或下划线的任意序列。这意味着单个标识符不能包含任何空格。

根据上述规则,以下都是Python中的合法名称:

xcelsiusspamspam2SpamAndEggsSpam_and_Eggs

标识符区分大小写,因此对Python来说,spam、Spam、sPam和SPAM是不同的名称。在大多数情况下,程序员可以自由选择符合这些规则的任何名称。好的程序员总是试图选择一些名字,它们能描述被命名的东西。

需要注意一件重要的事情:一些标识符是Python本身的一部分。这些名称称为"保留字”或"关键字”,不能用作普通标识符。Python关键字的完整列表如表1所列。

表1  Python关键字

False

class

finally

is

return

None

continue

for

lambda

try

True

def

from

nonlocal

while

and

del

global

not

with

as

elif

if

or

yield

assert

else

import

pass

break

except

in

raise

Python还包括相当多的内置函数,例如我们用过的print函数。虽然在技术上可以将内置的函数名称标识符用于其他目的,但这通常是一个"非常糟糕”的主意。例如,如果你重新定义print的含义,那么就无法再打印信息。你也会让所有阅读程序的Python程序员感到非常困惑,他们预期print指的是内置函数。内置函数的完整列表可在附录A中找到。 2 表达式

程序操作数据。到目前为止,我们已经在示例程序中看到了数字和文本两种不同类型的数据。我们将在后面的节中详细讨论这些不同的数据类型。现在,你只需要记住,所有的数据必须以一些数字格式存储在计算机上,不同类型的数据以不同的方式存储。

产生或计算新数据值的程序代码片段称为"表达式”。最简单的表达式是字面量。字面量用于表示特定值。在chaos.py中,你可以找到数字3.9和1。convert.py程序包含9、5和32。这些都是数字字面量的例子,它们的含义显而易见:32就是代表32(数字32)。

我们的程序还以一些简单的方式处理文本数据。计算机科学家将文本数据称为"字符串”。你可以将字符串视为

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值