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

简介:

本节书摘来自异步社区《Python参考手册(第4版•修订版)》一书中的第1章,第1.2节,作者David M. Beazley,更多章节内容可以访问云栖社区“异步社区”公众号查看。

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()方法的相关参数,而冒号后的部分则是格式说明符。

相关文章
|
2月前
|
Python
掌握Python算术与反算术精髓,解锁编程新境界,轻松驾驭数值计算,让每一行代码都精准无误!
【8月更文挑战第22天】Python中的算术运算符如加(+)、减(-)、乘(*)、除(/)、整除(//)、取模(%)及幂运算(**)是数值计算的基础,简化了编程过程并使代码更直观。例如,可以轻松计算矩形的面积与周长。而所谓的“反算术”操作,如取反(使用负号-)和求绝对值,则能进一步处理数值结果。这些运算符是编程中不可或缺的工具,帮助我们高效且清晰地解决问题。
28 0
|
8天前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
17 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
5天前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
23 8
|
5天前
|
存储 C语言 Python
通过 Cython 带你认清 Python 变量的本质
通过 Cython 带你认清 Python 变量的本质
28 8
|
7天前
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
14 2
|
7天前
|
Python
Python实现200以内的乘法算术题
Python实现200以内的乘法算术题
|
7天前
|
Python
Python变量用法——单下划线变量名_ 原创
Python变量用法——单下划线变量名_ 原创
22 0
|
7天前
|
Python
Python变量用法——变量解包
Python变量用法——变量解包
18 0
|
2月前
|
Python
|
2月前
|
Python
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
18 2
下一篇
无影云桌面