《Python语言程序设计》学习笔记
笔记选自《Python语言程序设计》[美]梁勇 著
本篇笔记用没有记录用python绘画的turtle库
第二章 基本程序设计
- 在一条print语句中显示任意多项,如果某项是一个数字,那么这个数字会被自动转化为显示一个字符串
print(item1, item2, itemk)
- 提示用户输入一个值,然后将它赋给变量variable
variable = input("Enter a value:") #输入的值是一个字符串
- 对字符串求值并转换为一个数值,eval函数
# Prompt the user to enter a radius
radius = eval(input("Enter a value for radius:"))
#Compute area
area = radius * 3.14159
# Display results
print("The area for the circle of radius", radius, "is", area)
eval("3 + 4") #返回7
- 从键盘读取多组输入
number1 = eval(input("Enter the first number:"))
number2 = eval(input("Enter the second number:"))
number3 = eval(input("Enter the third number:"))
- 通常,一条语句会在一行的末尾处结束。
- 在某些情况下,Python解释器不能确定在多行中哪里是语句的结尾。可以在一行结尾处放置一个继续符号
\
来告诉解释器这条语句继续到下一行,如下面的语句。
sum = 1 + 2 + 3 + 4 + \
5 + 6
# 等价于sum = 1 + 2 + 3 + 4 + 5 + 6
-
标识符用于命名程序中标识像变量和函数这样的元素,所有的标识符必须遵从以下规则:
- 标识符是由字母、数字和下划线(_)构成的字符序列。
- 标识符必须以字母或下划线(_)开头,不能以数字开头。
- 标识符不能是关键字。关键字,又被称为保留字,它们在Python中有特殊意义。例如:
import
是一个关键字,它告诉Python解释器将一个模块导入到程序。 - 标识符可以为任意长度。
-
一个值被赋给多个变量,变量在表达式中使用之前必须被创建
i = j = k = 1
count = 1 #变量在使用前必须被创建
count = count + 1
- 同时赋值,含义是Python计算等号右边的表达式并同时赋值给等号左边对应的变量。
var1, var2, var3 = exp1, exp2, exp3
- 同时赋值也可以用于在一条语句用获取多个输入。
number1, number2, number3 = eval(input("Enter three numbers separated by commas: "))
- 简化交换x, y的值
x, y = y, x #Swap x with y
-
Python没有命名常量的特殊语法,为了区别常量和变量,我们全部使用大写字母来命令常量。
PI = 3.1415926
-
使用常量有下面三个好处:
- 你不必为了使用一个值多次而重复性输入。
- 如果你需要修改常量的值,只需要在源代码一处进行修改
- 描述性名字会提高程序的易读性。
-
Python中有两种数值类型(整数和浮点数)与+、-、*、/、//、%和**一起工作
-
一个拥有小数点的数字即使小数部分为0也是浮点数。整数和浮点数在计算机里的存储方式不同。
算数运算符
名称 | 含义 | 举例 | 结果 |
---|---|---|---|
+ | 加法 | 34+1 | 35 |
- | 减法 | 34.0-0.1 | 33.9 |
* | 乘法 | 300*30 | 9000 |
/ | 浮点数除法 | 1/2 | 0.5 |
// | 整数除法 | 1//2 | 0 |
** | 求幂 | 4**0.5 | 2.0 |
% | 取余 | 20%3 | 2 |
运算符+和-既可以用于一元运算也可用于二元运算符。一元运算符只能有一个操作数,而二元操作符有两个操作数。如:-5中的符号是一元的,表示5的相反数。
-
程序设计中求余运算非常有用。例如:偶数%2总是0而奇数%2总是1。这样,你就可以用这个特性判断一个数字是奇数还是偶数。
-
科学计数法
浮点数可以用 a ∗ 1 0 b a*10^b a∗10b形式的科学计数法来编写。例如:123.456的科学计数法表示为 1.23456 ∗ 1 0 2 1.23456*10^2 1.23456∗102,Python中被写作1.23456E2
或1.23456E+2
;而0.0123456可以表示为 1.23456 ∗ 1 0 − 2 1.23456*10^{-2} 1.23456∗10−2,Python中被写作1.23456E-2
。字母E(或e)代表指数而且可以大写也可以小写。 -
当一个变量被赋值一个太大的值而不能存入内存中。这会导致数据溢出。当一个浮点数太小(即太接近0)会导致下溢,而Python会将它近似为0。因此,你不需要关注下溢。
-
Python表达式的计算方式与算术表达式一致
-
首先执行括号内的运算符,内存括号里的表达式首先被执行。当一个表达式中使用多个运算符时,使用下面的运算符优先级规则决定计算顺序:
- 首先计算指数运算
**
- 接下来计算乘法
*
、浮点除法/
、整数除法//
和求余运算%
。如果一个表达式包含多个乘法、除法和求余运算,它们会从左向右运算。 - 最后计算加法
+
和减法-
运算符。如果一个表达式包含多个加法和减法运算,它们会从左向右运算。
- 首先计算指数运算
-
增强型赋值运算符:运算符
+
、-
、*
、/
、//
、%
和**
可以与赋值运算符(=
)组合在一起构成简捷运算符。
运算符 | 名称 | 举例 | 等式 |
---|---|---|---|
+= | Addition assignment | i += 8 | i = i + 8 |
-= | Subtraction assignment | i -= 8 | i = i - 8 |
*= | Multiplication assignment | i *= 8 | i = i * 8 |
/= | Float division assignment | i /= 8 | i = i / 8 |
//= | Integer division assignment | i //= 8 | i = i // 8 |
%= | Remainder assignment | i %= 8 | i = i % 8 |
**= | Exponent assignment | i **= 8 | i = i ** 8 |
- 类型转换:
希望获取小数的整数部分,可以使用int(value)
函数来返回一个浮点值的整数部分。 - 函数
int
也可以用于将整数字符串转换为整数。
注意:
函数int
也可以用于将整个字符串转换为整数。例如:int("34")
返回34。
所以,你可以使用函数eval
或int
将字符串转换为整型。
int
函数不能用于非整型字符串。例如:int("3.4")
将导致错误。
函数eval可以完成比简单转换更多的功能,可以用于计算表达式。例如:eval("3+4")
返回7
eval
函数处理数字串前有先导0时会产生错误,而int函数可以很好地处理这个问题。例如:eval("003")
会导致错误,而int("003")
会返回3
value = 5.6
int(value)
# 输出5,注意:小数部分被舍掉了而没有进位
也可以使用round
函数对数字进行四舍五入进位
value = 5.6
round(value)
# 输出6
-
注意:函数
int
和round
不会改变要转换的变量。调用函数后value的值没有改变。 -
保留小数点后两位的营业税的程序
(tax*100) / 100.0
# Prompt the user for input
purchaseAmount = eval(input("Enter purchase amount: "))
# Compute sales tax
tax = purchaseAmount * 0.06
# Display tax amount with two digits afer decimal point
print("Sales tax is", int(tax*100) / 100.0)
-
实例研究:显示当前时间
-
显示当前时间:
time.time()
返回以秒为单位的带毫秒精度的浮点值从1970年1月1日00:00:00开始到现在的GMT时间。这个时间被称作UNIX时间点。1970年是UNIX操作系统正式发布的年份。例如:time.time()
返回1285543633.205 它表示1285543633秒205微秒 -
以小时:分钟:秒数为格式显示当前GMT时间的程序
import time
currentTime = time.time() # Get current time
## Obtain the total seconds since midnight, Jan 1, 1970
totalSeconds = int(currentTime)
# Get the surrent second
currentSecond = totalSeconds % 60
# Obtain the total minutes
totalMinutes = totalSeconds // 60
# Compute the current minute in the hour
currentMinute = totalMinutes % 60
# Obtain the total hours
totalHours = totalMinutes // 60
# Compute the current hour
currentHour = totalHours % 24
# Display results
print("Current time is", currentHour,":",currentMinute,":",currentSecond,"GMR")
# 此处输出是:Current time is 9 : 45 : 35 GMR
在实例运行中,显示数字9为小时数,而希望输出应该是09。这可以使用一个在一个数字前加0的函数
format
来修正
def formar(number, width):
这个函数返回一个前缀为一个或多个0的数字。字符串的大小就是宽度。例如:format(34,5)
返回“00034”。
如果数字比指定宽度要长,那么,函数就返回表示这个数的字符串。例如:format(34,1)
,返回“34”。
- 程序开发周期:明确需求、系统分析、系统设计、实现、测试、部署和维护。
本章总结
- 可以使用
input
函数来获取输入,使用eval
函数将字符串转化为数值。 - 标识符是程序中使用的元素的名字
- 标识符是由任意长度的英文字母、数字、下划线(_)和星号(*)构成的字符序列。标识符必须以英文字母、下划线开头,不能以数字开头。标识符不能是关键字。
- 在程序中变量用于存储数据。
- 等号(=)的作用是赋值运算符。
- 在使用一个变量前必须对它赋值。
- Python中有两个数值数据类型:整数和实数。整数型(简写为int)适用于整数,而实数型(又称浮点型)适用于有小数点的数字。
- Python提供执行数值运算的运算符:+(加法)、-(减法)、*(乘法)、/(除法)、//(整数除法)、%(求余)和**(指数运算)
- Python表达式中数字运算符的运算法则与算术表达式一样。
- Python提供增强型赋值运算符:+=(加法赋值)、-=(减法赋值)、=(乘法赋值)、/=(浮点数除法赋值)、//=(整数除法赋值)和%=(求余赋值)。这些运算符由+、-、、/、//、%和**与赋值运算符(=)组合在一起构成增强型运算符。
- 在计算既有整型又有浮点型值的表达式时,Python会自动将整型转化为浮点型。
- 你可以使用
int(value)
将浮点型转换为整型。 - 系统分析是指分析数据流并且确定系统的输入和输出。
- 系统设计是一个程序员开发从开始输入到获取输出的流程。
- 系统设计与分析的实质就是输入、处理、输出。这被称为IPO。
关键术语
英文 | 中文 |
---|---|
algorithm | 算法 |
assignment operator(=) | 赋值符(=) |
augmented assignment | 增强型赋值 |
camelCase | 驼峰拼写法 |
compound assignment | 复合赋值 |
data type | 数据类型 |
expression | 表达式 |
floating-point numbers | 浮点数 |
identifiers | 标识符 |
incremental development and testing | 递增式开发与测试 |
input, process, output(IPO) | 输入、处理、输出(IPO) |
keyword | 关键字 |
line continuation symbol | 续行符 |
literal | 字面量 |
operands | 操作数 |
operators | 运算符 |
pseudocode | 伪代码 |
reserved word | 保留字 |
scope of a variable | 变量的范围 |
simultaneous assignment | 同时赋值 |
system analysis | 系统分析 |
system design | 系统设计 |
type conversion | 类型转换 |
variable | 变量 |