当前位置:嗨网首页>书籍在线阅读

04-字符串连接和复制

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

1.3 字符串连接和复制

根据操作符之后的值的数据类型,操作符的含义可能会改变。例如,在操作两个整型或浮点型值时,+是相加操作符;但是,在用于两个字符串之间时,它将字符串连接起来,成为“字符串连接”操作符。在交互式环境中输入以下内容:

>>> 'Alice' + 'Bob'
'AliceBob'

该表达式求值为一个新字符串,包含了两个字符串的文本。但是,如果你对一个字符串和一个整型值使用+操作符,Python就不知道如何处理,它将显示一条错误信息:

>>> 'Alice' + 42
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    'Alice' + 42
TypeError: can only concatenate str (not "int") to str

错误信息 Can only concatenate str(not "int")to str 表示Python认为你试图将一个整数连接到字符串 'Alice' 。代码必须显式地将整数转换为字符串,因为Python不能自动完成转换。(1.6节“程序剖析”在讨论 str()int()float() 函数时,将解释数据类型转换。)

* 操作符将两个整型或浮点型值相乘。但如果 * 操作符用于一个字符串值和一个整型值,它就变成了“字符串复制”操作符。在交互式环境中输入一个字符串乘以一个数字,效果如下:

>>> 'Alice' * 5
'AliceAliceAliceAliceAlice'

该表达式求值为一个字符串,它将原来的字符串复制若干次,次数就是整型的值。字符串复制是一个有用的技巧,但不像字符串连接那样常用。

* 操作符只能用于两个数字(作为乘法),或一个字符串和一个整型值(作为“字符串复制”操作符)。否则,Python将显示错误信息,像下面这样:

>>> 'Alice' * 'Bob'
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    'Alice' * 'Bob'
TypeError: can't multiply sequence by non-int of type 'str'
>>> 'Alice' * 5.0
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    'Alice' * 5.0
TypeError: can't multiply sequence by non-int of type 'float'

Python不理解这些表达式是有道理的:你不能把两个单词相乘,也很难将一个任意字符串复制小数次。