python编写程序-30分钟学会⽤Python编写简单程序
参与⽂末每⽇话题讨论,赠送异步新书
异步图书君
学习⽬标
知道有序的软件开发过程的步骤。
了解遵循输⼊、处理、输出(IPO)模式的程序,并能够以简单的⽅式修改它们。
了解构成有效Python标识符和表达式的规则。
能够理解和编写Python语句,将信息输出到屏幕,为变量赋值,获取通过键盘输⼊的信息,并执⾏计数循环。
软件开发过程
运⾏已经编写的程序很容易。较难的部分实际上是先得到⼀个程序。计算机是⾮常实在的,必须告诉它们要做什么,直⾄最后的细节。编写⼤型程序是⼀项艰巨的挑战。如果没有系统的⽅法,⼏乎是不可能
的。
创建程序的过程通常被分成⼏个阶段,依据是每个阶段中产⽣的信息。简⽽⾔之,你应该做以下⼯作。
分析问题确定要解决的问题是什么。尝试尽可能多地了解它。除⾮真的知道问题是什么,否则就不能开始解决它。
确定规格说明准确描述程序将做什么。此时,你不必担⼼程序“怎么做”,⽽是要确定它“做什么”。对于简单程序,这包括仔细描述程序的输⼊和输出是什么以及它们的相互关系。
创建设计规划程序的总体结构。这是描述程序怎么做的地⽅。主要任务是设计算法来满⾜规格说明。
实现设计将设计翻译成计算机语⾔并放⼊计算机。在本书中,我们将算法实现为Python程序。
测试/调试程序试⽤你的程序,看看它是否按预期⼯作。如果有任何错误(通常称为“缺陷”),那么你应该回去修复它们。定位和修复错误的过程称为“调试”程序。在调试阶段,你的⽬标是到错误,所以应该尝试你能想到的“打破”程序的⼀切可能。记住这句⽼格
⾔:“没有什么能防住⼈犯傻,因为傻⼦太聪明了。”php教程新手入门到精通视频
维护程序继续根据⽤户的需求开发该程序。⼤多数程序从来没有真正完成,它们在多年的使⽤中不断演进。
⽰例程序:温度转换器
让我们通过⼀个真实世界的简单例⼦,来体验软件开发过程的步骤,其中涉及⼀个虚构的计算机科学学⽣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 Computewell
defmain():
celsius = eval(input("What is the Celsius temperature? "))
fahrenheit =9/5* celsius +32
print("The temperature is", fahrenheit,"degrees Fahrenheit.")
main()
看看你是否能弄清楚这个程序的每⼀⾏做了什么。如果⼀些部分不是很清楚,也不要担⼼,下⼀节将详细讨论。
完成程序后,Susan测试它,看看它⼯作得如何。她使⽤她知道正确答案的输⼊。下⾯是两个测试的输出:
Whatisthe Celsius temperature?
The temperatureis32.0degrees Fahrenheit.
Whatisthe Celsius temperature?100
The temperatureis212.0degrees Fahrenheit.
你可以看到,Susan⽤值0和100来测试她的程序。看起来不错,她对解决⽅案感到满意。她特别⾼兴
的是,似乎没有必要调试(这很不寻常)。
学python编程入门
程序要素
app模板素材下载免费既然已经知道了编程过程,你就“⼏乎”准备好开始⾃⼰编写程序了。在此之前,你需要更完整的基础,了解Python的基本知识。接下来的⼏节将讨论⼀些技术细节,这对编写正确程序⾄关重要。这种材料看起来有点乏味,但你必须掌握这些基础,然后再进⼊更有趣的领域。
1 名称
你已经看到,名称是编程的重要组成部分。我们为模块命名(例如convert),也为模块中的函数命名(例如main)。变量⽤于为值命名(例如celsius和fahrenheit)。从技术上讲,所有这些名称都称为“标识符”。Python对标识符的构成有⼀些规则。每个标识符必须以字母或下划线(“_”字符)开头,后跟字母、数字或下划线的任意序列。这意味着单个标识符不能包含任何空格。
根据上述规则,以下都是Python中的合法名称:
xdubbo socket连接太多
celsius
spam
SpamAndEggs
Spam_and_Eggs
标识符区分⼤⼩写,因此对Python来说,spam、Spam、sPam和SPAM是不同的名称。在⼤多数情况下,程序员可以⾃由选择符合这些规则的任何名称。好的程序员总是试图选择⼀些名字,它们能描述被命名的东西。
需要注意⼀件重要的事情:⼀些标识符是Python本⾝的⼀部分。这些名称称为“保留字”或“关键字”,不能⽤作普通标识符。Python关键字的完整列表如表1所列。
表1  Python关键字
False
class
finally
is
return
Python还包括相当多的内置函数,例如我们⽤过的print函数。虽然在技术上可以将内置的函数名称标识符⽤于其他⽬的,但这通常是⼀
个“⾮常糟糕”的主意。例如,如果你重新定义print的含义,那么就⽆法再打印信息。你也会让所有阅读程序的Python程序员感到⾮常困惑,他们预期print指的是内置函数。内置函数的完整列表可在附录A中到。
2 表达式
程序操作数据。到⽬前为⽌,我们已经在⽰例程序中看到了数字和⽂本两种不同类型的数据。我们将在后⾯的节中详细讨论这些不同的数据类型。现在,你只需要记住,所有的数据必须以⼀些数字格式存储在计算机上,不同类型的数据以不同的⽅式存储。
产⽣或计算新数据值的程序代码⽚段称为“表达式”。最简单的表达式是字⾯量。字⾯量⽤于表⽰特定值。在chaos.py中,你可以到数字3.9和1。convert.py程序包含9、5和32。这些都是数字字⾯量的例⼦,它们的含义显⽽易见:32就是代表32(数字32)。
我们的程序还以⼀些简单的⽅式处理⽂本数据。计算机科学家将⽂本数据称为“字符串”。你可以将字符串视为可打印字符的序列。Python中通过将字符括在引号("")中来表⽰字符串字⾯量。如果你回头看看我们的⽰例程序,可以发现⼀些字符串字⾯量,例如"Hello"和"Enter a number between 0 and 1:"。这些字⾯量产⽣的字符串包含引号内的字符。请注意,引号本⾝不是字符串的⼀部分。它们只是告诉Python创建⼀个字符串的机制。
将表达式转换为基础数据类型的过程称为“求值”。在Python shell中键⼊表达式时,shell会计算表达式并打印出结果的⽂本表⽰。请考虑以下简短的交互:
>>>32
32
>>>"Hello"
'Hello'
>>>"32"
'32'
请注意,当shell显⽰字符串的值时,它将字符序列放在单引号中。这样让我们知道该值实际上是⽂本⽽不是数字(或其他数据类型)。在最后⼀次交互中,我们看到表达式"32"产⽣⼀个字符串,⽽不是⼀个数字。在这种情况下,Python实际上是存储字符“3”和“2”,⽽不是数字32的表⽰。如果你现在不太明⽩,不要太担⼼。我们在后⾯的节中讨论这些数据类型时,你的理解就会变得更加清晰。
⼀个简单的标识符也可以是⼀个表达式。我们使⽤标识符作为变量来给名字赋值。当标识符作为表达式出现时,它的值会被取出,作为表达式的结果。下⾯是与Python解释器的交互,展⽰了变量作为表达式:
>>> x =5
5
>>> print(x)
5
>>> print(spam)
Traceback (most recent call last):
File"", line1,in
NameError:name'spam'isnotdefined
⾸先,变量x被赋值为5(使⽤数字字⾯量5)。在第⼆⾏交互中,我们要求Python对表达式x求值。作为响应,Python shell打印出5,这是刚才赋给x的值。当然,如果我们明确要求Python⽤print语句打印x,也会得到相同的结果。最后⼀个交互展⽰了如果尝试使⽤未赋值的变量,会发⽣什么。Python不到值,所以它报告NameError。这说明没有该名称的值。这⾥的要点是,变量总是必须赋⼀个值,然后才能在表达式中使⽤。
较复杂、较有趣的表达式可以通过组合较简单的表达式和操作符来构造。对于数字,Python提供了⼀组标准的数学运算:加法、减法、乘法、除法和乘⽅。相应的Python运算符为“+”“-”“*”“/”和“**”。下⾯是⼀些来⾃chaos.py和convert.py的复杂表达式的例⼦:
3.9* x *(1 - x)
9/5 * celsius + 32
空格在表达式中没有作⽤。最后⼀个表达式如果写成9/5*celsius+32,结果完全相同。通常,在表达式中加⼀些空格让它更容易阅读,是个好⽅法。
Python的数学运算符遵循的优先级和结合律,与你在数学课上学到的相同,包括使⽤括号来改变求值的顺序。在⾃⼰的程序中构建复杂表达式应该没什么困难。请记住,只有圆括号在数字表达式中是允许的。如果需要,可以嵌套使⽤它们,创建如下的表达式:
((x1 - x2) / 2*n) + (spam / k**3)
顺便说⼀句,Python还提供了字符串的运算符。例如,可以“加”字符串。
html设置背景图
>>>"Bat"+"man"
'Batman'
这被称为“连接”。如你所见,效果是创建⼀个新的字符串,把两个字符串“粘”在⼀起。
3 输出语句
既然有了基本的构建块(标识符和表达式),你就可以更完整地描述各种Python语句。 你已经知道信息可以使⽤Python的内置函数print 在屏幕上显⽰。到⽬前为⽌,我们已经看了⼏个例⼦,但我还没有详细解释打印功能。像所有的编程语⾔⼀样,Python对每个语句的语法(形式)和语义(意义)有⼀套精确的规则。计算机科学家已经开发了复杂的符号表⽰法,称为“元语⾔”,⽤于描述编程语⾔。在本书中,我们将依靠⼀个简单的模板符号表⽰法来说明各种语句的语法。
因为print是⼀个内置函数,所以print语句与任何其他函数调⽤具有相同的⼀般形式。我们键⼊函数名print,后⾯带上括号中列出的参数。下⾯是⽤我们的模板符号时print语句看起来的样⼦:
css3从入门到精通
print(,, ...,)
print()
这两个模板展⽰了两种形式的print语句。第⼀个表⽰print语句可以包含函数名print,后⾯带上带括号的表达式序列,⽤逗号分隔。模板中的尖括号符号()⽤于表⽰由Python代码的其他⽚段填充的“槽”。括号内的名称表⽰缺少什么,expr表⽰⼀个表达式。省略号(“...”)表⽰不确定的序列(在这个例⼦中是表达式)。你实际上不会输⼊圆点。第⼆个版本的print语句表明,不打印任何表达式的print也是合法的。
就语义⽽⾔,print语句以⽂本形式显⽰信息。所有提供的表达式都从左到右求值,结果值以从左到右的⽅式显⽰在输出⾏上。默认情况下,在显⽰的值之间放置⼀个空格字符。作为⽰例,下⾯print语句的序列:
print(3+4)
print(3, 4, 3 + 4)
print()
print("The answer is", 3 + 4)
产⽣的输出为:
7
347
The answeris7
最后⼀个语句说明了,字符串字⾯量表达式如何经常在print语句使⽤,作为标记输出的⽅便⽅法。
注意,连续的print语句通常显⽰在屏幕的不同⾏上。空print(⽆参数)⽣成空⾏输出。在背后,真正发⽣的是,在打印所有提供的表达式之后,print函数⾃动附加某种结束⽂本。默认情况下,结束⽂本是表⽰⾏结束的特殊标记字符(表⽰为“ ”)。我们可以通过包含⼀个附加参数显式地覆盖这个默认值,从⽽改变这种⾏为。这⾥使⽤命名参数的特殊语法,或称为“关键字”参数。
包含指定结束⽂本的关键字参数的print语句的模板如下:
print(,, ...,, end=" ")
命名参数的关键字是end,它使⽤“=”符号赋值,类似于变量赋值。注意,在模板中我已经显⽰其默认值,即⾏末字符。这是⼀种标准⽅式,⽤于显⽰在未明确指定某个其他值时,关键字参数具有的值。
print语句中的end参数有⼀个常见⽤法,即允许多个print构建单⾏输出。例如:
print("The answer is", end=" ")
print(3 + 4)
产⽣单⾏输出:
The answeris7
注意,第⼀个print语句的输出如何以空格(" ")⽽不是⾏末字符结束,第⼆个语句的输出紧跟在空格之后。
4 赋值语句
Python中最重要的语句之⼀是赋值语句。我们在前⾯的例⼦中已经看到了⼀些。
简单赋值
基本赋值语句具有以下形式:
=
这⾥variable是⼀个标识符,expr是⼀个表达式。赋值的语义是,右侧的表达式被求值,然后产⽣的值与左侧命名的变量相关联。
下⾯是我们已经看到的⼀些赋值:
x=3.9* x * (1- x)
fahrenheit=9/5* celsius +32
x=5
变量可以多次赋值。它总是保留最新赋的值。下⾯的交互式Python会话展⽰了这⼀点:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。