《Python编程快速上手——让繁琐工作自动化》——1.6 程序剖析

1.6 程序剖析

新程序在文件编辑器中打开后,让我们快速看一看它用到的Python指令,逐一查看每行代码。

1.6.1 注释

下面这行称为“注释”。

Python会忽略注释,你可以用它们来写程序注解,或提醒自己代码试图完成的事。这一行中,#标志之后的所有文本都是注释。

有时候,程序员在测试代码时,会在一行代码前面加上#,临时删除它。这称为“注释掉”代码。在你想搞清楚为什么程序不工作时,这样做可能有用。稍后,如果你准备还原这一行代码,可以去掉#。

Python也会忽略注释之后的空行。在程序中,想加入空行时就可以加入。这会让你的代码更容易阅读,就像书中的段落一样。

1.6.2 print()函数

print()函数将括号内的字符串显示在屏幕上。

代码行print('Hello world!')表示“打印出字符串'Hello world!'的文本”。Python执行到这行时,你告诉Python调用print()函数,并将字符串“传递”给函数。传递给函数的值称为“参数”。请注意,引号没有打印在屏幕上。它们只是表示字符串的起止,不是字符串的一部分。

也可以用这个函数在屏幕上打印出空行,只要调用print()就可以了,括号内没有任何东西。

在写函数名时,末尾的左右括号表明它是一个函数的名字。这就是为什么在本书中你会看到print(),而不是print。第2章更详细地探讨了函数。

1.6.3 input()函数

函数等待用户在键盘上输入一些文本,并按下回车键。

这个函数求值为一个字符串,即用户输入的文本。前面的代码行将这个字符串赋给变量myName。

你可以认为input()函数调用是一个表达式,它求值为用户输入的任何字符串。如果用户输入'Al',那么该表达式就求值为myName = 'Al'。

1.6.4 打印用户的名字

接下来的print()调用,在括号间包含表达式'It is good to meet you, ' + myName。

要记住,表达式总是可以求值为一个值。如果'Al'是上一行代码保存在myName中的值,那么这个表达式就求值为'It is good to meet you, Al'。这个字符串传给print(),它将输出到屏幕上。

1.6.5 len()函数

你可以向len()函数传递一个字符串(或包含字符串的变量),然后该函数求值为一个整型值,即字符串中字符的个数。

在交互式环境中输入以下内容试一试:

>>> len('hello')
5
>>> len('My very energetic monster just scarfed nachos.')
46
>>> len('')
0

就像这些例子,len(myName)求值为一个整数。然后它被传递给print(),在屏幕上显示。请注意,print()允许传入一个整型值或字符串。但如果在交互式环境中输入以下内容,就会报错:

 >>> print('I am ' + 29 + ' years old.')
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    print('I am ' + 29 + ' years old.')
TypeError: Can't convert 'int' object to str implicitly

导致错误的原因不是print()函数,而是你试图传递给print()的表达式。如果在交互式环境中单独输入这个表达式,也会得到同样的错误。

>>> 'I am ' + 29 + ' years old.'
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
   'I am ' + 29 + ' years old.'
TypeError: Can't convert 'int' object to str implicitly

报错是因为,只能用+操作符加两个整数,或连接两个字符串。不能让一个整数和一个字符串相加,因为这不符合Python的语法。可以使用字符串版本的整数,修复这个错误。这在下一节中解释。

1.6.6 str()、int()和float()函数

如果想要连接一个整数(如29)和一个字符串,再传递给print(),就需要获得值'29'。它是29的字符串形式。str()函数可以传入一个整型值,并求值为它的字符串形式,像下面这样:

>>> str(29)
'29'
>>> print('I am ' + str(29) + ' years old.')
I am 29 years old. 

因为str(29)求值为’29’,所以表达式'I am ' + str(29) + ' years old.'求值为'I am ' + '29' + ' years old.',它又求值为'I am 29 years old.'。这就是传递给print()函数的值。

str()、int()和float()函数将分别求值为传入值的字符串、整数和浮点数形式。请尝试用这些函数在交互式环境中转换一些值,看看会发生什么。

>>> str(0)
'0'
>>> str(-3.14)
'-3.14'
>>> int('42')
42
>>> int('-99')
-99
>>> int(1.25)
1
>>> int(1.99)
1
>>> float('3.14')
3.14
>>> float(10)
10.0

前面的例子调用了str()、int()和float()函数,向它们传入其他数据类型的值,得到了字符串、整型或浮点型的值。

如果想要将一个整数或浮点数与一个字符串连接,str()函数就很方便。如果你有一些字符串值,希望将它们用于数学运算,int()函数也很有用。例如,input()函数总是返回一个字符串,即便用户输入的是一个数字。在交互式环境中输入spam = input(),在它等待文本时输入101。

>>> spam = input()
101
>>> spam
'101'

保存在spam中的值不是整数101,而是字符串'101'。如果想要用spam中的值进行数学运算,那就用int()函数取得spam的整数形式,然后将这个新值存在spam中。

>>> spam = int(spam)
>>> spam
101

现在你应该能将spam变量作为整数,而不是字符串使用。

>>> spam * 10 / 5
202.0

请注意,如果你将一个不能求值为整数的值传递给int(),Python将显示出错信息。

>>> int('99.99')
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'
>>> int('twelve')
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    int('twelve')
ValueError: invalid literal for int() with base 10: 'twelve'

如果需要对浮点数进行取整运算,也可以用int()函数。

>>> int(7.7)
7
>>> int(7.7) + 1
8

在你的程序中,最后3行使用了函数int()和str(),取得适当数据类型的值。

myAge变量包含了input()函数返回的值。因为input()函数总是返回一个字符串(即使用户输入的是数字),所以你可以使用int(myAge)返回字符串的整型值。这个整型值随后在表达式int(myAge) + 1中与1相加。

相加的结果传递给str()函数:str(int(myAge) + 1)。然后,返回的字符串与字符串'You will be '和' in a year.'连接,求值为一个更长的字符串。这个更长的字符串最终传递给print(),在屏幕上显示。

假定用户输入字符串'4',保存在myAge中。字符串'4'被转换为一个整型,所以你可以对它加1。结果是5。str()函数将这个结果转化为字符串,这样你就可以将它与第二个字符串'in a year.'连接,创建最终的消息。这些求值步骤如图1-4所示。

文本和数字相等判断

虽然数字的字符串值被认为与整型值和浮点型值完全不同,但整型值可以与浮点值相等。

>>> 42 == '42'
False
>>> 42 == 42.0
True
>>> 42.0 == 0042.000
True

Python进行这种区分,因为字符串是文本,而整型值和浮点型都是数字。

时间: 2024-10-23 20:38:30

《Python编程快速上手——让繁琐工作自动化》——1.6 程序剖析的相关文章

《Python编程快速上手——让繁琐工作自动化》——1.3 字符串连接和复制

1.3 字符串连接和复制 根据操作符之后的值的数据类型,操作符的含义可能会改变.例如,在操作两个整型或浮点型值时,+是相加操作符.但是,在用于两个字符串时,它将字符串连接起来,成为"字符串连接"操作符.在交互式环境中输入以下内容: >>> 'Alice' + 'Bob' 'AliceBob' 该表达式求值为一个新字符串,包含了两个字符串的文本.但是,如果你对一个字符串和一个整型值使用加操作符,Python就不知道如何处理,它将显示一条错误信息. >>>

《Python编程快速上手——让繁琐工作自动化》——导读

前 言 "你在2个小时里完成的事,我们3个人要做两天."21世纪早期,我的大学室友在一个电子产品零售商店工作.商店偶尔会收到一份电子表格,其中包含竞争对手的数千种产品的价格.由3个员工组成的团队,会将这个电子表格打印在一叠厚厚的纸上,然后3个人分一下.针对每个产品价格,他们会查看自己商店的价格,并记录竞争对手价格较低的所有产品.这通常会花几天的时间. "如果你有打印件的原始文件,我会写一个程序来做这件事."我的室友告诉他们,当时他看到他们坐在地板上,周围都是散落堆叠

《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式

第一部分 Python编程基础 第1章 Python基础 Python编程语言有许多语法结构.标准库函数和交互式开发环境功能.好在,你可以忽略大多数内容.你只需要学习部分内容,就能编写一些方便的小程序. 但在动手之前,你必须学习一些基本编程概念.就像魔法师培训,你可能认为这些概念既深奥又啰嗦,但有了一些知识和实践,你就能像魔法师一样指挥你的计算机,完成难以置信的事情. 本章有几个例子,我们鼓励你在交互式环境中输入它们.交互式环境让你每次执行一条Python指令,并立即显示结果.使用交互式环境对于

《Python编程快速上手——让繁琐工作自动化》——2.7 控制流语句

2.7 控制流语句 现在,让我们来看最重要的控制流部分:语句本身.语句代表了在图2-1的流程图中看到的菱形,它们是程序将做出的实际决定. 2.7.1 if语句 最常见的控制流语句是if语句.if语句的子句(也就是紧跟if语句的语句块),将在语句的条件为True时执行.如果条件为False,子句将跳过. 在英文中,if语句念起来可能是:"如果条件为真,执行子句中的代码."在Python中,if语句包含以下部分: if关键字: 条件(即求值为True或False的表达式): 冒号: 在下一

《Python编程快速上手——让繁琐工作自动化》——2.4 混合布尔和比较操作符

2.4 混合布尔和比较操作符 既然比较操作符求值为布尔值,就可以和布尔操作符一起,在表达式中使用. 回忆一下,and.or和not操作符称为布尔操作符是因为,它们总是操作于布尔值.虽然像4 < 5这样的表达式不是布尔值,但可以求值为布尔值.在交互式环境中,尝试输入一些使用比较操作符的布尔表达式. >>> (4 < 5) and (5 < 6) True >>> (4 < 5) and (9 < 6) False >>> (

《Python编程快速上手——让繁琐工作自动化》——2.5 控制流的元素

2.5 控制流的元素 控制流语句的开始部分通常是"条件",接下来是一个代码块,称为"子句".在开始学习具体的Python控制流语句之前,我将介绍条件和代码块. 2.5.1 条件 你前面看到的布尔表达式可以看成是条件,它和表达式是一回事."条件"只是在控制流语句的上下文中更具体的名称.条件总是求值为一个布尔值,True或False.控制流语句根据条件是True还是False,来决定做什么.几乎所有的控制流语句都使用条件. 2.5.2 代码块 一些代

《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块

2.8 导入模块 Python程序可以调用一组基本的函数,这称为"内建函数",包括你见到过的print().input()和len()函数.Python也包括一组模块,称为"标准库".每个模块都是一个Python程序,包含一组相关的函数,可以嵌入你的程序之中.例如,math模块有数学运算相关的函数,random模块有随机数相关的函数,等等. 在开始使用一个模块中的函数之前,必须用import语句导入该模块.在代码中,import语句包含以下部分: import关键字

《Python编程快速上手——让繁琐工作自动化》——1.7 小结

1.7 小结 你可以用一个计算器来计算表达式,或在文本处理器中输入字符串连接.甚至可以通过复制粘贴文本,很容易地实现字符串复制.但是表达式以及组成它们的值(操作符.变量和函数调用),才是构成程序的基本构建块.一旦你知道如何处理这些元素,就能够用Python操作大量的数据. 最好是记住本章中介绍的不同类型的操作符(+.-.­­././/.%和­­是数学操作符,+和­­是字符串操作符),以及3种数据类型(整型.浮点型和字符串). 我们还介绍了几个不同的函数.print()和input()函数处理简单

《Python编程快速上手——让繁琐工作自动化》——2.6 程序执行

2.6 程序执行 在第1章的hello.py程序中,Python开始执行程序顶部的指令,然后一条接一条往下执行."程序执行"(或简称"执行")这一术语是指当前被执行的指令.如果将源代码打印在纸上,在它执行时用手指指着每一行代码,你可以认为手指就是程序执行. 但是,并非所有的程序都是从上至下简单地执行.如果用手指追踪一个带有控制流语句的程序,可能会发现手指会根据条件跳过源代码,有可能跳过整个子句.