python入门编程之算数、字符串与变量

笔记内容主要摘抄于《Python编程入门》--Toby Donaldson 著

算数、字符串与变量

1.整数算术

1.1 基本算术运算符

加 +; 减 -; 乘 *; 除 /; 求余 %; 整除 //; 乘方 **。

 

1.2 求值顺序

Python 算术运算规则与常规算术运算相同。

 

1.3 长度不受限制

与其他大多数编程语言不同,Python对整数的长度没有限制。

2.浮点数运算

Python中,浮点数是带小数点的数字。所有适用于整数的算术运算都可用于浮点数,包括%(求余)和//(整除)。

>>> 12.6*0.5
6.3
>>> 12.3+0.3
12.600000000000001
>>> 8.1**5.4
80504.30442243877
>>> 5.6//2
2.0
>>> 3.8+-5.6
-1.7999999999999998
>>> 5.6%3.2
2.3999999999999995

2.1 浮点数字面量

对于非常大或非常小的浮点数,通常用科学记数法表示。

>>> 8.8**-5.4
7.939507629591553e-06

e-06表示将它前面的数字乘以10-6。如果愿意,你可以直接使用科学技术法。

>>> 2.3e02
230.0

在使用小数点方面,Python非常灵活。

>>> 3.
3.0
>>> 3.0
3.0

对于类似0.5的数字。书写时可以包含前导0,也可以不包含。

>>> 0.5
0.5
>>> .5
0.5

注:区分5和5.0很重要,因为5是整数,5.0是浮点数,它们的内部表示大相径庭。

        通常5.0比5.更清晰。

2.2 溢出

与整数不同,浮点数存在上限和下限,超出将导致溢出错误。溢出错误意味着计算结果太大或太小,Python无法将其表示为浮点数。面对溢出错误,Python可能沉默不语,即继续执行错误计算,而不告诉你出了问题。

>>> 500.0**1000
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')

2.3 精度有限

无论在哪种计算机上,浮点数的精度都是一个无法解决的问题。在计算机中,数字用二进制表示,但并非所有浮点数都可以用二进制精确的表示。即便在最简单的情况也可能出现问题。

>>> 1-2/3
0.33333333333333337

结果应是小数点后面无穷个3,但这里只有17位,并且最后一位也不对。

这些细微误差通常来讲不是问题。但当你执行大量计算时,小误差会累积出大误差。

注:一般而言,应优先考虑整数,因为他们更精确不会溢出。

2.4 复数

Python提供内置的复数支持。用1j表示-1的平方根

>>> 1j
1j
>>> 1j*1j
(-1+0j)

3. 其他数学函数

Python自带编写好的代码模块,比如说math。

3.1 使用返回值

在这些函数返回一个值,这意味着它们的结果为整数或浮点数,具体随函数而异。

在可以使用数字的任何地方,都可以使用这些函数。Python自动执行函数,并将函数调用替换为返回值。

3.2 导入模块

>>> import math

然后就可以使用了

>>> math.sqrt(4)
2.0

或者这样也可以

>>> from math import *

这样调用math模块中任何函数时,都无需在前面加上math.。

>>> sqrt(4)
2.0
>>> log(4)
1.3862943611198906

使用导入方式from math import *时,如果函数与math模块中的某个函数同名,将被math模块中的同名函数覆盖。

因此使用导入方式import math通常更安全,因为他不会覆盖任何既有函数。

还可以只导入特定函数

>>> from math import sqrt

4. 字符串

字符串是一系列字符。字符包括字母、数字、标点符号以及数百个特殊符号和不可打印的字符。

4.1 标识字符串

在Python中可使用3种方式来表示字符串字面量。

>>> 'cat'
'cat'
>>> "house"
'house'
>>> """http"""
'http'

>>> """
... me an my monkey
... Have something to hide
... """
'\nme an my monkey\nHave something to hide\n'

单引号和双引号的一个主要用途是能让你在字符串中包含‘和“。

>>> "it's great"
"it's great"
>>> 'She said "Yes"'
'She said "Yes"'

4.2 字符串长度

要确定字符串包含多少字符,可使用函数len(s)

>>> len("guandianxiaohao")
15
>>> len('day, day ,up')
12
>>> len("")
0
>>> len('')
0
>>> len(' ')
1

由于len返回一个整数,所以在任何可以使用整数的地方。都可以用len。

>>> 5+len('wang')*len("shi")
17

4.3 字符串拼接

字符串相加

>>> 'hot'+'dog'
'hotdog'
>>> 'and'+' '+'you'+'?'
'and you?'

同义字符串拼接很多次可以用下面这种方式

>>> 'and'+' '+'you'+'?'
'and you?'
>>> 10*'ha'
'hahahahahahahahahaha'
>>> 3*'hee'+2*'!'
'heeheehee!!'

扩展:

>>> len(12*'haha')
48
>>> len('hi'+'mi')*'ha'
'hahahaha'

4.4 列出模块中的函数

导入模块后,可以使用dir(m)列出模块的所有函数。

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh'
, 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh',
'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fm
od', 'frexp', 'fsum', 'gamma', 'hypot', 'isfinite', 'isinf', 'isnan', 'ldexp', '
lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'pi', 'pow', 'radians', 'sin',
 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

查看完整Python内置函数清单可以用dir(__builtins__)

>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'Blocki
ngIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError
', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'Conne
ctionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentErro
r', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPoint
Error', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarni
ng', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError',
'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'Non
e', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'O
verflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupErr
or', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'Sto
pIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabEr
ror', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeEr
ror', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWar
ning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionErro
r', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__',
'__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'boo
l', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex'
, 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval
', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals
', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubc
lass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', '
min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit'
, 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'st
aticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

还可以用help(f)查看函数f的文档字符串。

>>> help(sqrt)
Help on built-in function sqrt in module math:

sqrt(...)
    sqrt(x)

    Return the square root of x.

4.5 打印文档字符串

另一个使用技巧就是打印函数的文档字符串。

>>> print(math.sqrt.__doc__)
sqrt(x)

Return the square root of x.

大多数Python内置函数都有简短的文档字符串。

>>> print(bin.__doc__)
bin(number) -> string

Return the binary representation of an integer.

   >>> bin(2796202)
   '0b1010101010101010101010'

5. 类型转换

5.1 整数和字符串转换为浮点数

>>> float(3)
3.0
>>> float('3')
3.0
>>> float('3.0')
3.0

5.2 整数和浮点数转换为字符串

>>> str(85)
'85'
>>> str(85.0)
'85.0'

隐式转换

>>> 15*8.5
127.5

这里自动将25转换为25.0,再将其与8.5相乘。

5.3 浮点数转换为整数

函数int(x)将小数部分删除,而round(x)采用标准圆整方式。

>>> int(8.64)
8
>>> int(8.5)
8
>>> round(8.64)
9
>>> round(8.5)
8
>>> round(7.5)
8

Python采用的圆整策略:将小数部分.5的数字圆整到最接近的偶数(有时被称为银行家圆整)。因此,小数部分为.5可能向下圆整,也可能向上圆整。

5.4 字符串转换为数字

>>> int('5')
5
>>> float('5.0')
5.0
>>> int('5a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5a'

函数int(s)和float(s)将字符串转换为整数/浮点数,他们假定字符串看起来像整数或浮点数,否则会报错。

6. 变量和值

6.1 变量和值

>>> fruit="cherry"
>>> fruit
'cherry'

其中,fruit是一个变量名,它指向字符串”cherry“。

6.2 变量命名规则

(1)变量名长度不受限制,但其中的字符必须是字母、数字、下划线,而不能使用空格、连字符、标点符号、引号或其他字符。

(2)变量名的第一个字符不能使数字,而必须是字母或下划线。

(3)Python区分大小写,因此TAX、Tax和tax是截然不同的变量名。

(4)不能将Python关键字用作变量名。

6.3 赋值语句

赋值语句两个用途:

(1)定义新变量

(2)让已定义的变量指向特定的值

6.4 变量如何引用值

x=expr: 让x指向表达式expr的值,expr可以是任何结果为值的Python表达式。

对于没有任何变量指向的值,Python自动将其删除。一般而言,Python跟踪所有的值,并删除不再有变量指向的值,这称为垃圾收集

6.4 赋值时不复制

赋值语句并不会复制指向的值,而只是标记和重新标记既有的值。因此无论变量指向的对象有多大、多复杂,赋值语句的效率都非常高。

6.5 数字和字符串是不可变的

>>> s='apple'
>>> s+'s'
'apples'
>>> s
'apple'
>>> 5=1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

在看起来是修改字符串的情况下,Python实际上是在创建拷贝。在Python中,根本不可能修改数字和字符串。

6.6 多重复值

给多个变量同时赋值

>>> x,y,z=1,'one',3.0
>>> x
1
>>> y
'one'
>>> z
3.0
>>> x,y,z
(1, 'one', 3.0)

正如最后一条语句显示,还可以在一行显示多个值,方法是将它们作为元组。

6.7 交换变量的值

多重复值的一个很实用的用途就是交换两个变量的值:

>>> a,b=5,9
>>> a,b
(5, 9)
>>> a,b=b,a
>>> a,b
(9, 5)

语句a,b=b,a的含义是,同时给变量a和b赋值。如果不使用多重赋值,将两个变量的值互换的标准方式如下:

>>> a,b=5,9
>>> temp=a
>>> a=b
>>> b=temp
>>> a,b
(9, 5)

多重赋值的功能并不比常规赋值多,他只是一用偶尔使用的快捷方式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值