前几节的练习其实一直在用字符串,python 中使用英文引号表示字符串:
print("双引号表示字符串")
print('单引号表示字符串')
# 使用单引号还是双引号 PEP8 没有特别规定,
# 不过似乎有输出字符用双引号的习俗如我们常用的 print() 的内容
# 如何打印有引号的字符串?
print('馆主说:"当字符串中已经使用了一种引号时的时候,可以用另一种引号包裹字符串"')
# 中英混输时,中文标点经常在个我们捣乱制造一些麻烦和 bug,
# 不过不过我们也可以反过来使用中文引号,算不算神 bug 呢?
# 为了演示上面还是用了英文引号。
print("""使用三个"时
可以进行多行编辑,
当然三个'是不是也行呢?""")
# 注意上面对齐的问题,虽然对齐了代码似乎很好看,但输出就...
中文环境说字符串就少不了说说 Python 两大版本间和字符串不得不说的那段故事了。
现在的计算机标准都是米国人弄的,也许当年也许没考虑我等二、三世界的国家能用上计算机这种高科技,又或者什么客观原因吧,总之最早的计算机需要把 1 和 0 转化的文字只有一些标点和 26 个英文的大小写。这种翻译编码叫做 ASCII
。
后来美帝国主义的魔爪伸向了更多的国家,于是带来了 ASCII
这本字典无法容纳更多语言翻译的问题。为了解决问题是就有了各国语言专用字典(中文:GBK、GB18030、GIB5等)、万国字典(如 unicode 及其节约版 utf-8 )等方案。具体介绍廖雪峰老师的介绍更清楚
然后就是重点啦
Python2 默认的字符串是 ASCII
编码,使用其他语言会出错,需要在字符串前加 u
表示字符串使用 unicode
编码,例如 u'python2 中要这样写'
。
Python3 注重优雅的 python 社区自然不能让脱裤子这种多此一举不够优雅的事情继续下去,于是在 python3 中默认字符串编辑就变为了 unicode
。从此我们再也不用过多担心字符编码带来的各种麻烦了。
OK,进入练习正题。
本题还是字符串的练习,我们将键入大量字符串、变量和格式化字符。另外还将练习使用程序员常用的变量名简写。
w
和 e
用 +
连起来就可以生成更长的字符串。
# 在变量中使用格式化字符
x = "There are %d types of people." % 10
# 在变量中使用格式化字符,并且格式化其他变量
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." %(binary, do_not)
print(x)
print(y)
# 利用 %r 格式化格式化字符显示原始字符的引号
# 打印字符串和格式化的变量
print("I said: %r." % x)
print("I also said: '%s'." % y)
# 这里格式化了一个布尔型变量 False
hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"
print(joke_evaluation % hilarious)
# 下面演示了字符串的拼接打印
w = "This is the left side of..."
e = "a string with a right side."
print(w + e)
y = "Those who know %s and those who %s." %(binary, do_not)
# 第一、二处 ^ ^
# 第三处
print("I said: %r." % x)
# 第四处
print("I also said: '%s'." % y)
木有了,其他两处看起来像但不是。因为没有引号,不是字符串:
x = "There are %d types of people." % 10
# 这里 10 是数字,不是字符串。如果是 '10' 就是了
hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"
# 如同我在注视中所写,这里是 hilarious 是布尔型变量,而非字符串
+
连接起来?馆主我比较笨这种天生的、本来就有的东西我真不知道 why。要说怎么加的到是了解一点。
python 的加分运算符 +
会尝试把两边的东西加在一起,即便不是数字。
如果两边是字符串,则做拼接也就是 ‘a’ + ‘b’
等于 'ab'
如果是布尔型,则 False = 0 True = 1 进行运算
列表、元祖则同样做拼接变成一个列表或元祖
但是字典、集合不能用 +
拼接或相加
《笨办法学 python3》系列练习计划——目录