第2章 认识变量与基本数学运算
2.1 认识变量
变量是一个暂时存储数据的地方,在Python中可以用“=”等符号设置变量的内容(赋值),示例如下:
>>> # 创建一个变量x
>>> x = 120
>>> print(x)
120
>>> x
120
注:在Python Shell环境下,也可以直接输入变量名称,从而获得变量的值。
一个程序中可以使用多个变量,如果一天工作8小时,一年工作300天,用y存储年薪,则有:
>>> x = 125
>>> y = x * 8 * 300
>>> y
300000
如果月花销为9000元,使用变量z存储,可以用下列公式计算每年的花费(使用变量a存储):
>>> z = 9000
>>> a = z * 12
>>> a
108000
如果要计算每年可剩下多少钱(使用变量b存储),则有:
108000
>>> b = y - a
>>> b
192000
在设计程序时,尽量取有意义的变量名,最好做到“见名知义”。
>>> hourly_salary = 125 # 时薪,每小时的薪资
>>> annual_salary = hourly_salary * 8 * 300 # 年薪,一年工作所赚的钱
>>> monthly_fee = 9000 # 月支出,每月花销
>>> annual_fee = monthly_fee * 12 # 年支出,每年的花销
>>> annual_savings = annual_salary - annual_fee # 每年所存储的钱,净收入
>>> annual_savings
192000
2.2 认识程序的意义
如果时薪、工作天数或每月花销改变,所有输入与运算都要重新开始,为实现程序的复用,可使用Python Shell新建一个文档(这个文档就是所谓的程序)。
存储为ch2_1.py
# ch2_1.py
hourly_salary = 125 # 时薪,每小时的薪资
annual_salary = hourly_salary * 8 * 300 # 年薪,一年工作所赚的钱
monthly_fee = 9000 # 月支出,每月花销
annual_fee = monthly_fee * 12 # 年支出,每年的花销
annual_savings = annual_salary - annual_fee # 计算每年存储金额
print(annual_savings)
运行:
===================== RESTART: E:/Python-Files/ch2/ch2_1.py ====================
192000
>>>
2.3 认识注释的意义
设计程序时,应该适度为程序代码添加注释,这样可以提高程序的可读性,利人利己。
2.3.1 注释符号#
不论是使用Python Shell直译器或是Python程序文档,“#”符号右边的文字,就是程序注释,Python语言的直译器会忽略此符号右边的文字。(如上述例子所示)
2.3.2 三个单引号或双引号
如果要进行大段落的注释,可以用三个单引号或双引号将注释文字标明。
# ch2_1.py
'''
以时薪、每月花销、工作时间计算每年净收入
'''
"""
2020-10-07 python小练习
"""
hourly_salary = 125 # 时薪,每小时的薪资
annual_salary = hourly_salary * 8 * 300 # 年薪,一年工作所赚的钱
monthly_fee = 9000 # 月支出,每月花销
annual_fee = monthly_fee * 12 # 年支出,每年的花销
annual_savings = annual_salary - annual_fee # 计算每年存储金额
print(annual_savings) # 列出每年存储金额
2.4 Python变量与其他程序语言的差异
在许多程序语言中,变量在使用前需要先声明,Python对于变量的使用则是可以在需要时,再直接设置使用。有些程序语言在声明变量时,需要设置变量的数据类型,Python则不需要设置,它会针对变量值的内容自行设置数据类型。
2.5 变量的命名原则
Python对于变量的命名和使用有一些规则要遵守,否则会造成程序错误。
- 变量名通常由英文字母、数字和下划线组成。
- 变量名不能以数字开头。
- 英文字母严格区分大小写,例如:Name和name被视为不同变量名称。
- Python系统保留字(或称关键词)或Python内建函数名称不可当作变量名称。
- 变量名不建议使用中文,以防出现兼容性问题。
Python系统保留字
and | as | assert | break | class | continue |
---|---|---|---|---|---|
def | del | elif | else | except | false |
finally | for | from | global | if | import |
in | is | lambda | none | nonlocal | not |
or | pass | raise | return | true | try |
while | with | yield |
Python系统内建函数
abs() | all() | any() | apply() | basestring() | bin() | bool() | buffer() |
---|---|---|---|---|---|---|---|
bytearray() | callable() | chr() | classmethod() | cmp() | coerce() | compile() | complex() |
delattr() | dict() | dir() | divmod() | enumerate() | eval() | execfile() | file() |
filter() | float() | format() | frozenset() | getattr() | globals() | hasattr() | hash() |
help() | hex() | id() | input() | int() | intern() | isinstance() | issubclass() |
iter() | len() | list() | locals() | long() | map() | max() | memoryview() |
min() | next() | object() | oct() | open() | ord() | pow() | print() |
property() | range() | raw_input() | reduce() | reload() | repr() | reversed() | round() |
set() | setattr() | slice() | sorted() | staticmethod() | str() | sum() | super() |
tuple() | type() | unichr() | unicode() | vars() | xrange() | zip() | _import() |
注:若是不小心将系统内建函数名称当作变量,程序本身不会错误,但是原先函数的功能会丧失。
-
命名习惯
- 见名知义,如:登录–>login;
- 大驼峰:每个单词首字母大写,如:MyName;
- 小驼峰:第二个及之后的单词首字母大写,如:myName;
- 单词之间使用下划线。如:my_name。
-
不合法的变量名示例:
sum,1 # 变量不可有“,”
3y # 变量不可由阿拉伯数字开头
x$2 # 变量不可有“$”符号
and # 系统保留字不可当作变量名称
- 合法的变量名称:
SUM
_fg
x5
总和
2.6 基本数学运算
2.6.1 四则运算
Python的四则运算是指加(+)、减(-)、乘(*)、除(/)。
简单四则运算实例:
>>> x = 5 + 6 # 将5加6设置给变量x
>>> print(x)
11
>>> y = x - 10
>>> print(y) # 打印x减10得到的差
1
>>> x = 3 * 8 # 将3乘以8得到的积赋给x
>>> print(x)
24
>>> y = x / 6 # 将x除以6得到的商赋给y
>>> print(y)
4.0
>>>
2.6.2 余数和整除
余数(mod)所使用的符号是“%”,可计算除法运算中的余数。整除所使用的符号是“//”,是指除法运算中只保留整数部分。
余数和整数运算实例:
>>> x = 9 % 5 # 将9除以5的余数赋给变量x
>>> print(x)
4
>>> y = 9 // 2 # 将9除以2的整数结果赋给变量y
>>> print(y)
4
>>>
2.6.3 次方
次方的符号是“**”。
平方、次方的运算实例。
>>> x = 3 ** 2 # 将3的平方赋值给变量x
>>> print(x)
9
>>> y = x ** 3 # 将x的3次方(立方)赋值给变量y
>>> print(y)
729
>>>
2.6.4 Python语言控制运算的优先级
Python语言遇上计算式同时出现在一个指令内时,除了括号“()”内部运算最优先外,其他运算优先次序如下。
- 次方
- 乘法、除法、求余数(%)、求整数(//),彼此按照先后顺序运算。
- 加法、减法,彼此按照先后顺序运算。
Python语言控制运算的优先级应用:
>>> x = ( 5 + 6 ) * 8 - 2
>>> print(x)
86
>>> y = 5 + 6 * 8 - 2
>>> print(y)
51
>>>
2.7 指派运算符(复合赋值运算符)
常见的指派运算符如下:
运算符 | 实例 | 说明 |
---|---|---|
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
//= | a //= b | a = a // b |
**= | a **= b | a = a ** b |
指派运算符的实例:
>>> x = 10
>>> x += 5
>>> print(x)
15
>>> x -= 5
>>> print(x)
10
>>> x /= 5
>>> print(x)
2.0
>>> x = 10
>>> x %= 5
>>> print(x)
0
>>> x = 10
>>> x //= 5
>>> print(x)
2
>>> x *= 5
>>> print(x)
10
>>> x **= 3
>>> print(x)
1000
>>>
2.8 Python等符号的多重指定使用
使用Python时,可以一次设置多个变量等于某一数值。
- 设置多个变量等于某一数值的应用。
>>> x = y = z = 10
>>> print(x,y,z)
10 10 10
>>>
Python也允许多个变量同时指定不同的数值。
- 设置多个变量,每个变量有不同值。
>>> x, y, z = 10, 20, 30
>>> print(x, y, z)
10 20 30
>>>
当执行上述多重设置变量值后,甚至可以执行更改变量内容。
- 将变量内容交换。
>>> x, y, z = z, y, x
>>> print(x, y, z)
30 20 10
>>>
"""
1.算术运算符
+:加;
-:减;
*:乘;
/:除;
//:整除;
%:取余;
**:指数;
():小括号,用来提高运算优先级
混合运算优先级顺序:() > ** > * > / // % > + -
"""
"""
2.赋值运算符
=:赋值,将“=”右侧的结果赋值给等号左侧的变量
"""
# 单个变量赋值
num = 1
print(num) # 1
# 多个变量赋值
num1, float1, str1 = 10, 3.14, 'hello world'
print(num1, float1, str1) # 10 3.14 hello world
# 多变量赋相同值
a = b = 3
print(a) # 3
print(b) # 3
"""
3.复合赋值运算符
+=:加法赋值运算符;
-=:减法赋值运算符;
*=:乘法赋值运算符;
/=:除法赋值运算符;
//=:整除赋值运算符;
%=:取余赋值运算符;
**=:幂赋值运算符
"""
a = 10
print(a) # 10
# 加
a += 1
print(a) # 11
# 减
a -= 3
print(a) # 8
# 乘
a *= 2
print(a) # 16
# 除
a /= 3
print(a) # 5.333333333333333
a = int(a)
print(a) # 5
# 整除
a //= 4
print(a) # 1
# 取余
a %= 3
print(a) # 1
# 平方
a **= 5
print(a) # 1
"""
4.比较运算符
==:判断相等;
!=:不等于;
>:大于;
<:小于;
>=:大于等于;
<=:小于等于
"""
num2 = 3
print(num2 == 3) # True
print(num2 != 3) # False
print(num2 > 3) # False
print(num2 < 3) # False
print(num2 >= 3) # True
print(num2 <= 3) # True
"""
5.逻辑运算符
and与:x and y; --> x和y均为True,结果才为True,否则为False
or或:x or y; --> 只有x和y均为False,结果才为False,否则为True
not非:not x --> x为True,则返回False;x为False,则返回True
"""
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a < b) or (b < c)) # True
print((a > b) or (b < c)) # True
print(not (a > b)) # True
# 拓展
# 数字之间的逻辑运算
a = 0
b = 1
c = 2
# and运算符,只要有一个值为0,结果为0,否则结果为最后一个非0数字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1
# or运算符,只有所有值均为0时结果才为0,否则结果为第一个非0数字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1
2.9 Python的断行
在设计大型程序时,语句过长时通常需要分成两行或多行,此时可以在语句后面加上“\”符号,Python解释器会将下一行的语句视为这一行的语句。特别注意,在“\”符号右边不可加上任何符号或文字,即使是注释符号也不允许。
另外,也可以在语句内使用小括号,如果使用小括号,就可以在语句右边加上注释符号,。
将一个语句分成多行的应用:
# ch2_4.py
a = b = c = 10
x = a + b + c + 12
print(x)
# 续行方法1
y = a +\
b + \
c +\
12
print(y)
# 续行方法2
z = (a + # 此处可以加上注释
b +
c +
12 )
print(z)
===================== RESTART: E:/Python-Files/ch2/ch2_4.py ====================
42
42
42
>>>