跟着官档学python 002--数字、字符串、列表

3.1 python作计算器

3.1.1 数字

>>> 4444+5555
9999
>>> 100-25*3
25
>>> (50/2*3-25)/5
10.0
>>> 23/3
7.666666666666667
>>> 9/5
1.8

整数型 (如2, 4, 20)属于 int类型,带有小数部分的数字 (如5.0, 1.6) 属于float浮点型 。

除法(/)总是返回一个float类型数。要做 floor 除法 并且得到一个整数结果(返回商的整数部分) 可以使用 // 运算符;要计算余数可以使用 %:

>>> 25/3
8.333333333333334
>>> 25//3
8
>>> 25%3
1
>>> 5*3+2
17

通过Python,可以使用**做n次方运算[1]:

>>> 5**2
25
>>> 2**7
128

等号 (=) 用于给变量赋值。赋值之后,在下一个提示符之前不会有任何结果显示:

>>> w=100
>>> h=200
>>> w*h
20000

完全支持浮点数运算;同时混合的数型的运算将使结果由整数转换为浮点数︰

>>> 15*2.55/1.5
25.5
>>> 9.0/4
2.25

在交互模式下,最后输出的表达式会被赋值给变量_.这意味着,当您使用Python作为桌面计算器时,继续计算变得很容易,例如:

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

除了 整型 和 浮点,Python 支持其他类型的数字,如 小数 和 分数。Python 也具有内置支持的 复数,并使用 j 或 J 后缀 (例如指示的虚部3+5j)。

3.1.2 字符串

除了数字,Python还可以处理字符串,这可以用多种方式表示。他们可以被括在单引号 (’…’) 或双引号 ("…") 中,二者等价 。\ 可以用于转义’︰

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

在交互式解释器中,输出的字符串用引号括起来,特殊字符用反斜杠进行转义。虽然可能和输入看上去不太一样(括起来的引号可能会变),但是两个字符串是相等的。如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。print() 函数生成可读性更好的输出,通过省略引号和通过打印字符转义和特殊字符︰

>>> print('"Isn\'t," she said.')
"Isn't," she said.
>>> s='First line. \nSecond line.'
>>> s
'First line. \nSecond line.'
>>> print(s)
First line.
Second line.
>>>

如果你不想让 \ 被解释为特殊字符开头的字符,您可以通过添加 r 使用 原始字符串︰

>>> print('D:\oracle\app')
D:\oraclepp
>>> print(r'D:\oracle\app')
D:\oracle\app
>>>

字符串可以跨多行。一种方法使用三重引号: “”"…""" 或 ‘’’…’’’。行结尾会自动包含在字符串中,但它是可以通过在一行的末尾增加 \防止以下情况。下面的示例(注意,没有开始的第一行 ):

>>> print("""\
... Usage: thingy [OPTIONS]
...     -h
...     -H hostname
... """)
Usage: thingy [OPTIONS]
    -h
    -H hostname

字符串可以用+操作符连接,也可以用*操作符重复多次:

>>> 'I '+3*' LOVE '+' You!'
'I  LOVE  LOVE  LOVE  You!'

相邻的两个或多个字符串字面量(用引号引起来的)会自动连接。

>>> 'you' 'love' 'me'
'youloveme'
>>>

这只适用于两个字面值,不适用于变量和表达式,如果你想连接多个变量或者连接一个变量和一个字面量,使用“+”::

>>> I='you'
>>> I 'like'
  File "<stdin>", line 1
    I 'like'
           ^
SyntaxError: invalid syntax
>>> I+' like'
'you like'

字符串可以索引,第一个字符的索引值为0。Python没有单独的字符类型;一个字符就是一个简单的长度为1的字符串。

>>> word[0]
'L'
>>> word[3]
'e'

索引也可以是负值,此时从右侧开始计数:
注意,因为 -0 和 0 是一样的,负的索引从 -1 开始。

>>> word[-1]
'e'
>>> word[-3]
'o'
>>> word[-4]
'L'

除了索引,还支持切片。索引用于获得单个字符,切片让你获得子字符串:
注意开始字符总包括在内,并且始终排除结束。这使得s[:i] + s[i:]永远等于s
切片索引具有非常有用的默认值;省略的第一个索引默认为零,省略第二个索引默认为切片字符串的长度。

>>> word[0:2]
'Lo'
>>> word[2:3]
'v'
>>> word[:3]+word[3:]
'Love'
>>>

Python 字符串不能更改 — — 他们是 不可变的。因此,赋值给字符串索引的位置会导致错误:

>>> word[-1]='J'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>

如果你需要一个不同的字符串,你应该创建一个新的:

>>> 'I'+word[1:]
'Iove'
>>> word[:2]+'lo'
'Lolo'
>>>

内建函数 len() 返回字符串的长度:

>>> s='qwertyuiopasdfghjklzxcvbnm'
>>> len(s)
26

3.1.3 列表

Python 有几个 复合 数据类型,用来组合其他的值。最有用的是 列表,可以写成中括号中的一列用逗号分隔的值。列表可以包含不同类型的元素,但是通常一个列表中的所有元素都拥有相同的类型。

>>> squares = [1,4,9,16,25]
>>> squares
[1, 4, 9, 16, 25]

与字符串 (和所有其他内置 序列 类型)相似,列表可以被索引和切片︰

>>> squares[-1]
25
>>> squares[:3]
[1, 4, 9]
>>> squares[-3:]
[9, 16, 25]

列表也支持连接这样的操作:

>>> squares+[36,49,64,81,100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

与字符串的不可变特性不同,列表是可变的类型,例如可以改变它们的内容:

>>> cubes = [1,8,27,65,125]
>>> 4**3
64
>>> cubes[3]=64
>>> cubes
[1, 8, 27, 64, 125]

你还可以通过append () 方法 在列表的末尾添加新的项目(我们将会看到更多相关方法)︰

>>> cubes.append(216)
>>> cubes.append(7**3)
>>> cubes
[1, 8, 27, 64, 125, 216, 343]

赋值到切片也是可能的,这甚至可以更改列表的大小或完全清除它:

>>> letters=['a','b','c','d','e','f','g','h']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> letters[2:5]=['C','D','E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g', 'h']
>>> letters[2:5]=[]
>>> letters
['a', 'b', 'f', 'g', 'h']
>>> letters[:]=[]
>>> letters
[]
>>>

内建函数 len() 同样适用于列表:

>>> len(squares)
5

列表可以嵌套 (创建包含其他列表的列表),例如:

>>> a=['a','b','c','d']
>>> n=[1,2,3]
>>> x=[a,n]
>>> x
[['a', 'b', 'c', 'd'], [1, 2, 3]]
>>> x[0][1]
'b'
>>>

3.2 编程第一步

当然,我们可以使用Python来完成更复杂的任务,而不仅是二加二。我们可以写一个生成斐波那契 初始子序列的程序,如下所示:

>>> a,b=0,1
>>> while b<10:
...    print(b)
...    a,b=b,a+b
...
1
1
2
3
5
8

第一行包含 多个赋值 ︰ 变量 a 和 b 同时获得新值 0 和 1。最后一行又这样使用了一次,说明等号右边的表达式在赋值之前首先被完全解析。右侧表达式是从左到右计算的。

while循环在满足条件为真时一直执行 (这儿: b < 10) .在 Python 中,像在 C 中,任何非零整数值为 True;零是 False。条件也可能是一个字符串或列表值,事实上任何序列,任何非零长度是真的;空序列都是false。

循环的本体是缩进的:缩进是Python对语句进行分组的方式。

print() 函数写入给定的参数。打印出来的字符串不包含引号,项目之间会插入一个空格,所以你可以设置漂亮的格式,像这样:

>>> a,b=0,1
>>> while b<1000:
...    print(b,end=',')
...    a,b=b,a+b
...
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,>>>

注意:

[1] 因为 ** 的优先级高于 -, -32会被解释为 -(32) 并得到结果 -9.。为了避免这一点并得到结果 9, 你可以使用 (-3)**2。
[2] 不像其他语言,诸如 \n 等的特殊字符,在单引号中 (’…’) 和双引号中 ("…") 有着相同含义。两者唯一的不同在于使用单引号你不需要转义 " (但是你必须转义 ') ,反之亦然。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值