笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

3.1. 将 Python 当做计算器

发布者: 三寸日光

我们来尝试一些简单的 Python 命令。启动解释器然后等待主提示符 >>> 出现。(不需要很久。)

3.1.1. 数字

解释器表现得就像一个简单的计算器:可以向其录入一些表达式,它会给出返回值。表达式语法很直白:运算符 + , - , * 和 / 与其它语言一样(例如: Pascal 或 C);括号用于分组。例如:

>>> 2+2
4
>>> # This is a comment
... 2+2
4
>>> 2+2  # and a comment on the same line as code
4
>>> (50-5*6)/4
5
>>> # Integer division returns the floor:
... 7/3
2
>>> 7/-3
-3

等号( '=' )用于给变量赋值:

>>> width = 20
>>> height = 5*9
>>> width * height
900

一个值可以同时赋给几个变量:

>>> x = y = z = 0  # Zero x, y and z
>>> x
0
>>> y
0
>>> z
0

变量在使用前必须“定义”(赋值),否则会出错:

>>> # try to access an undefined variable
... n
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

浮点数有完整的支持;与整型混合计算时会自动转为浮点数:

>>> 3 * 3.75 / 1.5
7.5
>>> 7.0 / 2
3.5

复数也得到支持;带有后缀 j 或 J 就被视为虚数。带有非零实部的复数写为 (real+imagj) ,或者可以用 complex(real, imag) 函数创建。

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0, 1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)

复数的实部和虚部总是记为两个浮点数。要从复数 z 中提取实部和虚部,使用 z.real 和 z.imag 。

>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5

浮点数和整数之间的转换函数( float() 和 int() 以及 long() ) 不能用于复数。没有什么正确方法可以把一个复数转成一个实数。函数 abs(z) 用于获取其模(浮点数)或 z.real 获取其实部:

>>> a=3.0+4.0j
>>> float(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: can't convert complex to float; use abs(z)
>>> a.real
3.0
>>> a.imag
4.0
>>> abs(a)  # sqrt(a.real**2 + a.imag**2)
5.0

交互模式中,最近一个表达式的值赋给变量 _ 。这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算,例如:

>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06

此变量对于用户是只读的。不要尝试给它赋值 —— 你只会创建一个独立的同名局部变量,它屏蔽了系统内置变量的魔术效果。

3.1.2. 字符串

相比数值,Python 也提供了可以通过几种不同方式传递的字符串。它们可以用单引号或双引号标识:

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

Python 解释器按照字符串被输入的方式打印字符串结果:为了显示准确的值,字符串包含在成对的引号中,引号和其他特殊字符要用反斜线( \ )转译。 如果字符串只包含单引号( ‘ )而没有双引号( ” )就可以用双引号( ” )包围,反之用单引号( ‘ )包围。 再强调一下, print 语句可以生成可读性更好的输出。

字符串文本有几种方法分行。可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容:

hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
    Note that whitespace at the beginning of the line is\
 significant."

print hello

需要注意的是,还是需要在字符串中写入 \n ——结尾的反斜杠会被忽略。前例会打印为如下形式:

This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line is significant.

另外,字符串可以标识在一对三引号中: """ 或 ''' 。三引号中,不需要行属转义,它们已经包含在字符串中:

print """\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
"""

得到如下输出:

Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

如果我们生成一个“原始”字符串, \n 序列不会被转义,而且行尾的反斜杠,源码中的换行符,都成为字符串中的一部分数据,因此下例:

hello = r"This is a rather long string containing\n\
several lines of text much as you would do in C."

print(hello)

会打印:

This is a rather long string containing\n\
several lines of text much as you would do in C.

字符串可以由 + 操作符连接(粘到一起),可以由 * 重复:

>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>'

相邻的两个字符串文本自动连接在一起,前面那行代码也可以写为 word ='Help' 'A';它只用于两个字符串文本,不能用于字符串表达式:

>>> 'str' 'ing'                   #  <-  This is ok
'string'
>>> 'str'.strip() + 'ing'   #  <-  This is ok
'string'
>>> 'str'.strip() 'ing'     #  <-  This is invalid
  File "<stdin>", line 1, in ?
    'str'.strip() 'ing'
                      ^
SyntaxError: invalid syntax

最新评论

Python3编程手册
  1. Python 入门指南

  2. 1. 开胃菜

  3. 2.1. 调用 Python 解释器

  4. 2.2. 解释器及其环境

  5. 3. Python 简介

  6. 3.1. 将 Python 当做计算器

  7. 3.2. 编程的第一步

  8. 4. 深入 Python 流程控制

  9. 4.1. if 语句

  10. 4.2. for 语句

  11. 4.3. range() 函数

  12. 4.4. break 和 continue 语句

  13. 4.5. pass 语句

  14. 4.6. 定义函数

  15. 4.7. 深入 Python 函数定义

  16. 4.8. 插曲:编码风格

  17. 5. 数据结构

  18. 5.1. 关于列表更多的内容

  19. 5.2. del 语句

  20. 5.3. 元组和序列

  21. 5.4. 集合

  22. 5.5. 字典

  23. 5.6. 循环技巧

  24. 5.7. 深入条件控制

  25. 5.8. 比较序列和其它类型

  26. 6. 模块

  27. 6.1. 深入模块

  28. 6.2. 标准模块

  29. 6.3. dir() 函数

  30. 6.4. 包

  31. 7. 输入和输出

  32. 7.1. 格式化输出

  33. 7.2. 文件读写

  34. 8. 错误和异常

  35. 8.1. 语法错误

  36. 8.2. 异常

  37. 8.3. 异常处理

  38. 8.4. 抛出异常

  39. 8.5. 用户自定义异常

  40. 8.6. 定义清理行为

  41. 8.7. 预定义清理行为

  42. 9. 类

  43. 9.1. 术语相关

  44. 9.2. Python 作用域和命名空间

  45. 9.3. 初识类

  46. 9.4. 一些说明

  47. 9.5. 继承

  48. 9.6. 私有变量

  49. 9.7. 补充

  50. 9.8. 异常也是类

  51. 9.9. 迭代器

  52. 9.10. 生成器

  53. 9.11. 生成器表达式

  54. 10. Python 标准库概览

  55. 10.1. 操作系统接口

  56. 10.2. 文件通配符

  57. 10.3. 命令行参数

  58. 10.4. 错误输出重定向和程序终止

  59. 10.5. 字符串正则匹配

  60. 10.6. 数学

  61. 10.7. 互联网访问

  62. 10.8. 日期和时间

  63. 10.9. 数据压缩

  64. 10.10. 性能度量

  65. 10.11. 质量控制

  66. 10.12. “瑞士军刀”

  67. 11. 标准库浏览

  68. 11.1. 输出格式

  69. 11.2. 模板

  70. 11.3. 使用二进制数据记录布局

  71. 11.4. 多线程

  72. 11.5. 日志

  73. 11.6. 弱引用

  74. 11.7. 列表工具

  75. 11.8. 十进制浮点数算法

  76. 12. 接下来?

  77. 13. 交互式输入行编辑历史回溯

  78. 13.1. 行编辑

  79. 13.2. 历史回溯

  80. 13.3. 快捷键绑定

  81. 13.4. 其它交互式解释器

  82. 14. 浮点数算法:争议和限制

  83. 14.1. 表达错误

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-7-27 18:43 , Processed in 0.057412 second(s), 18 queries .

© 2001-2020

返回顶部