《笨办法学 python3》系列练习计划——6. 字符串和文本

额外内容

前几节的练习其实一直在用字符串,python 中使用英文引号表示字符串:

print("双引号表示字符串")
print('单引号表示字符串')
# 使用单引号还是双引号 PEP8 没有特别规定,
# 不过似乎有输出字符用双引号的习俗如我们常用的 print() 的内容

# 如何打印有引号的字符串?
print('馆主说:"当字符串中已经使用了一种引号时的时候,可以用另一种引号包裹字符串"')
# 中英混输时,中文标点经常在个我们捣乱制造一些麻烦和 bug,
# 不过不过我们也可以反过来使用中文引号,算不算神 bug 呢? 
# 为了演示上面还是用了英文引号。

print("""使用三个"时
         可以进行多行编辑,
         当然三个'是不是也行呢?""")
# 注意上面对齐的问题,虽然对齐了代码似乎很好看,但输出就...

《笨办法学 python3》系列练习计划——6. 字符串和文本_第1张图片

Python3 VS. Python2

中文环境说字符串就少不了说说 Python 两大版本间和字符串不得不说的那段故事了。

现在的计算机标准都是米国人弄的,也许当年也许没考虑我等二、三世界的国家能用上计算机这种高科技,又或者什么客观原因吧,总之最早的计算机需要把 1 和 0 转化的文字只有一些标点和 26 个英文的大小写。这种翻译编码叫做 ASCII
后来美帝国主义的魔爪伸向了更多的国家,于是带来了 ASCII 这本字典无法容纳更多语言翻译的问题。为了解决问题是就有了各国语言专用字典(中文:GBK、GB18030、GIB5等)、万国字典(如 unicode 及其节约版 utf-8 )等方案。具体介绍廖雪峰老师的介绍更清楚

然后就是重点啦
Python2 默认的字符串是 ASCII 编码,使用其他语言会出错,需要在字符串前加 u 表示字符串使用 unicode 编码,例如 u'python2 中要这样写'
Python3 注重优雅的 python 社区自然不能让脱裤子这种多此一举不够优雅的事情继续下去,于是在 python3 中默认字符串编辑就变为了 unicode 。从此我们再也不用过多担心字符编码带来的各种麻烦了。

OK,进入练习正题。




题目

本题还是字符串的练习,我们将键入大量字符串、变量和格式化字符。另外还将练习使用程序员常用的变量名简写。

加分练习

  1. 给程序加注释,说明每行代码的作用。
  2. 找到所有 4 处“字符串包含字符串”的位置。
  3. Zed 可能撒谎,检查是否只有 4 处。
  4. 为什么 we+ 连起来就可以生成更长的字符串。




我的答案

6.0 基础练习 + 6.1 注释

# 在变量中使用格式化字符
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)

《笨办法学 python3》系列练习计划——6. 字符串和文本_第2张图片

6.2 找到四处“字符串包含字符串”的位置

y = "Those who know %s and those who %s." %(binary, do_not)
# 第一、二处          ^                ^

# 第三处
print("I said: %r." % x)

# 第四处
print("I also said: '%s'." % y)

6.3 还有其他字符串的迭代引用么?

木有了,其他两处看起来像但不是。因为没有引号,不是字符串:

x = "There are %d types of people." % 10
# 这里 10 是数字,不是字符串。如果是 '10' 就是了


hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"
# 如同我在注视中所写,这里是 hilarious 是布尔型变量,而非字符串

6.4 为什么字符串可以用 + 连接起来?

馆主我比较笨这种天生的、本来就有的东西我真不知道 why。要说怎么加的到是了解一点。
python 的加分运算符 + 会尝试把两边的东西加在一起,即便不是数字。
如果两边是字符串,则做拼接也就是 ‘a’ + ‘b’ 等于 'ab'
如果是布尔型,则 False = 0 True = 1 进行运算
列表、元祖则同样做拼接变成一个列表或元祖
但是字典、集合不能用 + 拼接或相加




返回目录

《笨办法学 python3》系列练习计划——目录

你可能感兴趣的:(Python)