《Python参考手册(第4版•修订版)》——1.2 变量和算术表达式

1.2 变量和算术表达式

程序清单1-1中的程序通过执行一次简单的复利计算,说明变量和表达式的用法。

程序清单1-1 简单的复利计算

principal = 1000           # 初始金额
rate = 0.05                # 利率
numyears = 5               # 年数
year = 1
while year <= numyears:
    principal = principal * (1 + rate)
    print year, principal  # 注意:在Python 3中应写成print(year, principal)
    year += 1

此程序的输出如下所示:

1 1050.0
2 1102.5
3 1157.625
4 1215.50625
5 1276.2815625

Python是一种动态类型的语言,在程序执行过程中,变量名称会被绑定到不同的值,而且这些值可以属于不同的类型。赋值运算符的作用仅仅是在名称和值之间创建一种关联。尽管每个值都有一个相关类型,如integer或string,但变量名称是无类型的,在执行过程中可以引用任意类型的数据。这与C语言不同,例如,在C语言中,名称代表了用于保存值的固定类型、大小和内存位置。Python的动态行为可以从程序清单1-1的principal变量看出来。最初给它分配的是一个integer值,但程序稍后给它重新赋了值,如下所示:

principal = principal * (1 + rate)

这条语句对表达式求值,并把名称principal重新与结果关联。principal的原始值是整数类型的1000,但现在的新值是浮点数(rate被定义为浮点数,因此上述表达式的值也是浮点数)。因此在程序中,principal看上去的“类型”就从integer动态变为了float。然而准确地说,不是principal的类型变了,而是principal名称引用的值的类型变了。

换行代表一条语句的结束。然而,也可以在同一行上使用分号来隔开多条语句,如下所示:

principal = 1000; rate = 0.05; numyears = 5;

while语句对随后的条件表达式进行检验。如果被检验的语句为真,while语句的主体就会执行。然后再次检验条件,再执行主体,直到条件为假。因为循环主体是由缩进表示的,每次循环时都会执行程序清单1-1中while之后的3条语句。Python不会指定所需缩进的量,只要在一个代码块中保持一致即可。然而,每个缩进层次使用4个空格是最常见的情况,而且通常也建议这么做。

程序清单1-1中的程序有一个问题,即输出不是很美观。为了改进这一点,可以让各列右对齐,并将principal的精度限制为两位。实现这种格式有几种方法。最常用的方法是使用字符串格式化运算符%,如下所示:

print "%3d %0.2f" % (year, principal)
print("%3d %0.2f" % (year, principal))   # Python 3

现在程序的输出如下:

1 1050.00
2 1102.50
3 1157.63
4 1215.51
5 1276.28

格式化字符串包含普通文本和特殊的格式化字符序列,如"%d"、"%s"和"%f"。这些序列分别用于指定特定类型数据的格式,如整数、字符串或浮点数。特殊字符序列还可以包含用于指定宽度和精度的修饰符。例如,"%3d"将一个整数格式化为在一个宽度为3的列中右对齐,而"%0.2f"将一个浮点数格式化为在小数点后只出现两位数字。格式化字符串的行为与C语言中的printf()函数几乎完全相同,第4章将对此进行详细说明。

更新潮的字符串格式化的方法是使用format()函数单独格式化每个部分。例如:

print format(year,"3d"),format(principal,"0.2f")
print(format(year,"3d"),format(principal,"0.2f")) # Python 3

format()函数使用的格式说明符类似于传统字符串格式化运算符(%)使用的格式说明符。例如,"3d"将一个整数格式化为在一个宽度为3的列中右对齐,而"%0.2f"将一个浮点数格式化为两位精度。字符串也有一个format()方法,可用于一次性格式化很多值。例如:

print "{0:3d} {1:0.2f}".format(year,principal)
print("{0:3d} {1:0.2f}".format(year,principal)) # Python 3

在这个例子中,"{0:3d}"和"{1:0.2f}"中冒号前的数字代表传递给format()方法的相关参数,而冒号后的部分则是格式说明符。

时间: 2024-09-13 00:39:18

《Python参考手册(第4版•修订版)》——1.2 变量和算术表达式的相关文章

《Python参考手册(第4版•修订版)》——导读

前 言 本书是Python编程语言的一份简明参考.尽管有经验的程序员也可以通过本书学习Python语言,但本书并不是一本讲述如何编程的全面教程或专著.相反,本书的目标是准确而简练地介绍Python语言核心以及Python库中最关键的部分.本书假定读者以前拥有Python或其他语言(如C或Java)的编程经验.另外,对系统编程(例如基本的操作系统概念和网络编程)有大致的了解对理解Python库参考中的部分章节可能会有一定的帮助. 本书的这一版是在Python发展的关键时刻面世的.Python 2.

《Python参考手册(第4版•修订版)》——第一部分 Python语言 第1章 Python简介 1.1 运行Python

第一部分 Python语言 本部分内容 第1章 Python简介 第2章 词汇和语法约定 第3章 类型与对象 第4章 运算符与表达式 第5章 程序结构与控制流 第6章 函数与函数编程 第7章 类与面向对象编程 第8章 模块.包与分发 第9章 输入与输出 第10章 执行环境 第11章 测试.调试.探查与调优 第1章 Python简介 本章将快速介绍Python这门语言,目标是在阐明Python的大部分基本特性的同时,又不会太过纠缠于特殊的规则或细节.为此,本章简要讲述一些基本概念,如变量.表达式.

《Python参考手册(第4版•修订版)》——2.4 字符串字面量

2.4 字符串字面量 字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号(').双引号(")或三引号('''或""")中.这三种引号形式在语义上没有差别,但要求在字符串开始和结尾使用的引号类型必须相同.置于单引号和双引号中的字符串必须定义在一行上,而三引号的字符串可以分布在多行上,并且会将所有格式符号(即换行符.制表符.空格等)包含在内.像"hello" 'world'这样的相邻字符串(由空格.换行符或续行符隔开)将被连接起来,形成一

《Python参考手册(第4版•修订版)》——1.10 迭代与循环

1.10 迭代与循环 最常用的循环结构是for语句,它可以用来对容器成员进行迭代操作.迭代是Python中内涵最丰富的功能之一.但最常见的迭代形式是简单循环访问一个序列(如字符串.列表或元组)的所有成员,例如: for n in [1,2,3,4,5,6,7,8,9]: print "2 to the %d power is %d" % (n, 2**n) 在这个例子中,每次迭代都会将列表[1,2,3,4,...,9]中的下一个值赋给变量n.因为在整数范围内执行循环十分常见,为此经常会

《Python参考手册(第4版•修订版)》——1.13 协程

1.13 协程 通常,函数运行时要使用单一的一组输入参数.但是,函数也可以编写成一个任务程序, 用来处理发送给它的一系列输入.这类函数被称为协程,它是通过将yield语句作为表达式(yield)的形式创建的,如下所示: def print_matches(matchtext): print "Looking for",matchtext while True: line = (yield) # 获得一行文本 if matchtext in line: print line 要使用这个函

《Python参考手册(第4版•修订版)》——1.9 字典

1.9 字典 字典就是一个关联数组或散列表,其中包含通过键(key)索引的对象.在大括号({ })中放入值即可创建字典,如下所示: stock = { "name" : "GOOG", "shares" : 100, "price" : 490.10 } 要访问字典成员,可使用键索引运算符,如下所示: name = stock["name"] value = stock["shares"

《Python参考手册(第4版•修订版)》——1.6 列表

1.6 列表 列表是任意对象组成的序列.把值放入方括号中就可以创建列表,如下所示: names = [ "Dave", "Mark", "Ann", "Phil" ] 列表使用从0开始的整数索引,使用索引运算符可以访问并修改列表中的项: a = names[2] # 返回列表的第3项"Ann" names[0] = "Jeff" # 将第1项改为"Jeff" 要将新项

《Python参考手册(第4版•修订版)》——1.4 文件输入和输出

1.4 文件输入和输出 以下程序可打开一个文件并逐行读取该文件的内容: f = open("foo.txt") # 返回一个文件对象 line = f.readline() # 调用文件的readline()方法 while line: print line, # 后面跟','将忽略换行符 # print(line,end='') # 在Python 3中使用 line = f.readline() f.close() open()函数返回一个新的文件对象.调用该对象的方法可以执行各种

《Python参考手册(第4版•修订版)》——1.5 字符串

1.5 字符串 要创建一个字符串字面量,将字符串放在单引号.双引号或三引号中即可,如下所示: a = "Hello World" b = 'Python is groovy' c = """Computer says 'No'""" 字符串前后使用的引号必须是对应匹配的.两个三引号之间出现的所有文本都视为字符串的内容,而使用单引号和双引号指定的字符串必须在一个逻辑行上.当字符串字面量的内容需放在多个文本行上时,三引号字符串就很