加减乘除为+-*/
//
为floor division,即取整除,得到比除后结果小的整数:
>>> 8/3; 8//3
2.6666666666666665
2
>>> -8/3; -8//3
-2.6666666666666665
-3
%
为modulo操作符,即取模。
>>> 8/3; 8%3
2.6666666666666665
2
>>> -8/3; -8%3
-2.6666666666666665
1
**
为exponential操作符,即指数。
>>> 4**2; 4**(1/2)
16
2.0
操作符优先级就不说了,不清楚的话查表,建议用括号。
标记(label)也成为变量(variable)。
>>> a = 4
>>> a = a**2
>>> a
16
Python中有integer(整型)和float(浮点型)两种数字类型。两种类型可相互转换。
>>> type(4.0)
<class 'float'>
>>> type(4)
<class 'int'>
>>> type(int(4.0))
<class 'int'>
分数
分数(fraction)的处理依赖内置模块fractions
。此模块定义了类Fraction。
Fraction类的定义为Fraction(numerator, denominator)
,其中numerator为分子,denominator为分母。
处理分数示例:
>>> from fractions import Fraction
>>> Fraction(3, 4)
Fraction(3, 4)
>>> str(Fraction(3, 4)) # 转换为字符串
'3/4'
>>> Fraction(3, 4) + 1 # 与整数运算得到Fraction
Fraction(7, 4)
>>> Fraction(3, 4) + 1.5 # 与浮点数运算得到浮点数
2.25
复数
以上讨论的都是实数(real number),复数(complex number)2 + 3i
在Python中表示为2 + 3j
:
# 两种表示法,建议用complex()方法,因为如果虚部为变量,只能用此方法。
# 例如complex(x, y)无法写成x+yj,系统无法识别yj
>>> a = 2 + 3j
>>> type(a)
<class 'complex'>
>>> complex(2, 3)
(2+3j)
>>> complex(2, 3) == a
True
# 运算
>>> complex(2, 3) + complex(2, 5)
(4+8j)
>>> complex(2, 3) - complex(2, 5)
-2j
>>> complex(2, 3) * complex(2, 5)
(-11+16j)
## 取得实部和虚部,均为浮点数
>>> z = 2 + 3j
>>> z.real
2.0
>>> z.imag
3.0
## 共轭复数用conjugate,即实部相同,虚部相反
>>> z.conjugate()
(2-3j)
复数a+bi
的magnitude
指(a**2 + b**2)**1/2
,也可以表示为abs(a+bi):
# 实数和虚数的abs()函数意义不同
>>> abs(-10)
10
>>> abs(-10.0)
10.0
>>> abs(z)
3.605551275463989
用户输入
使用input(),返回输入的字符串:
>>> a = input()
12.5
>>> type(a)
<class 'str'>
>>> a
'12.5'
>>> float(a)
12.5
>>> int(float(a))
12
使用例外处理无效输入
例外指Exception。
# 例1
>>> try:
... a = int(input())
... except ValueError:
... print(a, 'is invalid integer')
...
1.1
1.1 is invalid integer
# 例2
>>> try:
... a = float(input())
... except ValueError:
... print(a, 'is invalid float')
...
3/4
3/4 is invalid float
is_integter()函数仅对浮点数有效,可判断其是否为整数:
>>> 1.0.is_integer()
True
>>> 1.1.is_integer()
False
输入分数和复数
>>> a = Fraction(input('Enter a fraction: '))
Enter a fraction: 3/4
>>> a
Fraction(3, 4)
# 复数的输入不允许空格
>>> z = complex(input('Enter a complex number: '))
Enter a complex number: 2 + 3j
Traceback (most recent call last):
File "" , line 1, in <module>
ValueError: complex() arg is a malformed string
>>> z = complex(input('Enter a complex number: '))
Enter a complex number: 2+3j
>>> z
(2+3j)
定义一个函数:
>>> def formula(a, b):
... return a + 2*b
...
>>> formula(2, 3)
8
使用range产生序列:
>>> for i in range(4):
... print(i)
...
0
1
2
3
>>> for i in range(2, 4):
... print(i)
...
2
3
>>> for i in range(0, 10, 2):
... print(i)
...
0
2
4
6
8
计算整数的因子
以下程序factors.py
寻找输入整数的因子:
def factors(b):
'''Find the factors of an integer'''
for i in range(1, b+1):
if b % i == 0:
print(i)
if __name__ == '__main__':
b = input('Your Number Please: ')
b = float(b)
if b > 0 and b.is_integer():
factors(int(b))
else:
print('Please enter a positive integer')
运行:
$ python3 factors.py
Your Number Please: 16
1
2
4
8
16
$ python3 factors.py
Your Number Please: 17.0
1
17
生成乘法表
以下程序multi.py生成指定整数乘以1到10的结果:
def multi_table(a):
''' Multiplication table printer '''
for i in range(1, 11):
print(f'{a} x {i} = {a*i}')
if __name__ == '__main__':
a = input('Enter a number: ')
multi_table(float(a))
运行:
$ python3 multi.py
Enter a number: 10
10.0 x 1 = 10.0
10.0 x 2 = 20.0
10.0 x 3 = 30.0
10.0 x 4 = 40.0
10.0 x 5 = 50.0
10.0 x 6 = 60.0
10.0 x 7 = 70.0
10.0 x 8 = 80.0
10.0 x 9 = 90.0
10.0 x 10 = 100.0
f'{a} x {i} = {a*i}'
等同于'{0} x {1} = {2}'.format(a, i, a*i)
。
实际上,str.format()有丰富的设置,例如:
>>> a=1
>>> f'{a:.2f}'
'1.00'
>>> a=12.3456
>>> f'{a:.2f}'
'12.35'
单位换算
以下为机柜Rack Unit到厘米的换算:
def rackU_to_cms(n):
'''convert Rack Unit to centimeters'''
return n * 1.75 * 2.54
rackU = int(input('Please input Rack Unit:'))
print(f'{rackU}U = {rackU_to_cms(rackU)} cms')
运行:
$ python3 u2cm.py
Please input Rack Unit:1
1U = 4.445 cms
$ python3 u2cm.py
Please input Rack Unit:42
42U = 186.69 cms
求解一元二次方程
方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的解有两个:
x 1 = − b + b 2 − 4 a c 2 a x_{1} = \frac{-b + \sqrt{b^2-4ac}}{2a} x1=2a−b+b2−4ac
x 2 = − b − b 2 − 4 a c 2 a x_{2} = \frac{-b - \sqrt{b^2-4ac}}{2a} x2=2a−b−b2−4ac
作者编了求解函数,用户只需输入a, b和c。
<完>