文档章节

python-习题6~10

南风末
 南风末
发布于 2016/11/12 11:04
字数 1713
阅读 18
收藏 0

习题  6:字符串(string)和文本

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)  #定义变量,将要输出的内容存放到变量x,y,
                                                                   #   binary,do_not.

print x
print y

print "I said: %r."%x          #  ①
print "I also said:'%s'."%y        #  ②

hilarious = False
joke_evaluation = "Isn't that joke so funny?!%r"     # 定义变量

print joke_evaluation %hilarious    #  ③ ④

w = "This the left side of……"   
e = "a string with a right side."

print w + e    #  ⑤

运行结果:

There are 10 types of people.
Those who know binary and those who don't.
I said: 'There are 10 types of people.'.   #  变量x中的""变成了''
I also said:'Those who know binary and those who don't.'.
Isn't that joke so funny?!False
This the left side of……a string with a right side.  #   两变量相加合成一句了。

语法总结:

1.  用“+”号可以把两个字符串连起来组成一个更长的字符串(运算符重载)。

2.  当变量x里存放的字符串含有“”时,输出时不需要再加“”。

3.  输出后变量x中的“”变成了''.

 

加分习题:

1.  给以上程序加注释。(已加)

2.  找到所以字符串包含字符串的位置,总共有四个位置。(如上:用序号①②③④⑤标注)

3.  你确定只有四个位置吗?你怎么知道的?没准我在骗你呢。(作者真调皮)

4.  解释一下为什么w和e用 + 连起来就可以生成一个更长的字符串。

       运算符重载。具体说来,每个变量在Python中都是以对象形式存在的,即都是继承于Object。而Object则具有object.__add__(self, other)这样一个方法。每当处理x+y这一个表达式的时候,将会调用x.__add__(y)。另外为了交换律,还有__radd__方法,也就是用来处理y+x,这样会调用y.__radd__(x)

所以我们也可以自己重载+,比如:

class Free:
    def __init__(self, info):
        self.info = info   
    def __add__(self, moreinfo):
        return str(self) + moreinfo
    def __radd__(self, moreinfo):
        return moreinfo + str(self)
    def __str__(self):
        return self.info

Free这个Class,便得以直接成为+操作符的左/右参数。

正如richardzhiming所说,a+b是低效的,这是基于大量的+操作所讨论的。这是因为String是一个不可变的对象,你并不是真的把字符串b加到字符串a这个对象后面,而是需要创建一个新的对象,然后把a和b copy进去。因此当你大量进行+之时,你会创建许许多多临时的String对象。''.join(str_list)更好,则是因为,字符串的创建和拷贝是一次完成,而不需要创建很多String对象。

关于字符串连接具体的实验和更深入的探讨,可以参考:
Efficient String Concatenation in Python
The Python String Concatenation Shootout

另外,程序的优化的关键并不在于每个细节都优化到,而是优化整体的瓶颈,所以题主也不是一定要记住每一个细微的优化技巧。但是了解具体的实现细节,对于掌握语言,是很有意义的。

答案内容来自:http://segmentfault.com/q/1010000003933405

 

习题  7:更多的打印

print "Mary had a little lamb."
print "Its fleece was white as %s."% 'snow'  # 字符串变量用单引号括起来,区别于C
print "And everywhere that Mary went."
print "."* 10 # what'd that do?  ->输出10个“.”

end1 = "c"
end2 = "h"
end3 = "e"
end4 = "e"
end5 = "s"
end6 = "e"
end7 = "B"
end8 = "u"
end9 = "r"
end10 = "g"
end11 = "e"
end12 = "r"

# watch that comma at the end . try removing it to see what happens
print end1 + end2 + end3 + end4 + end5 + end6,
# 移除“,”结果会换行。
print end7 + end8 + end9 + end10 + end11 + end12  # 运算符重载

运行结果:

Mary had a little lamb.
Its fleece was white as snow.
And everywhere that Mary went.
..........
cheese Burger

语法总结:

1.  字符串变量用单引号  ' '.

2.  运算符重载:end(1~12)组成长字符串。

3.  倒数第三行的逗号去掉结果会换行。

练习  8:打印,打印

formatter = "%r %r %r %r"

print formatter % (1,2,3,4)
print formatter % ("one","two","three","four")
print formatter % (True,False,False,True)
print formatter % (
    "I had this thing.",
    "That you could type up right.",
    "But it didn't sing.",
    "So I said goodnight,"
    )

运行结果:

1 2 3 4
'one' 'two' 'three' 'four'
True False False True
'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight,'

语法总结:

1.  最后一行输出结果既含有单引号又含有双引号,

->字符串里面没有单引号时且外面是双引号时,输出单引号;

(外层是单引号时,输出时无引号;)

    里层有单引号时,输出外层双引号。

 

 

习题  9:打印, 打印, 打印

# Here's some new strange stuff,remenber type it exactly.

days = "Mon Tue Wed Thu Fri Sat Sum"
months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"

print "Here are the days:",days
print "Here are the months:",months
print """
There's something going on here.
With the three double-quotes.
We'll be able to type as much as we like.
Even 4 lines if we want,or 5,or 6.
"""

运行结果:

Here are the days: Mon Tue Wed Thu Fri Sat Sum
Here are the months: Jan
Feb
Mar
Apr
May
Jun
Jul
Aug

There's something going on here.
With the three double-quotes.
We'll be able to type as much as we like.
Even 4 lines if we want,or 5,or 6.

语法:

 

习题  10:

将双引号和单引号转义,让 Python 将引号也包含到字符串里边去,例:

"I am 6'2\" tall,"  #将字符串中的双引号转义
'I am 6\'2" tall."  #将字符串中的单引号转义

另:用三引号转义,也就是" " ",例:

tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."

fat_cat = """
I'll do list:
\t* Cat food
\t*Fishies
\t*Catnip\n\t* Grass
"""

print tabby_cat
print persian_cat
print backslash_cat
print fat_cat

运行结果:

	I'm tabbed in.
I'm split
on a line.
I'm \ a \ cat.

I'll do list:
	* Cat food
	*Fishies
	*Catnip
	* Grass

语法总结:

1.  "\t"制表符,缩进4个空格。

2.  三引号""",转义,可以放入任意多行文字。

加分题:

1.  另有Python转义字符:

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

原始字符串

有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串。如:

print r'\t\r'

实际输出为“\t\r”。

 

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

内容来自:http://www.cnblogs.com/allenblogs/archive/2011/04/28/2031477.html

2.  使用三个单引号(' ' ')和三个双引号,效果是一样的。

3.  将转义序列和格式化字符串放到一起,创建一种更为复杂的格式。

 

4.  %r  打印出来的是你写在脚本里的内容,而%s  打印的是你应该看到的内容(换句话说%r会打印任意你放入的内容)

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
南风末
粉丝 4
博文 162
码字总数 228214
作品 0
南昌
程序员
私信 提问
这本Python入门畅销书《“笨办法”学python 3》,不仅仅是一本书

此前,小编分享过一篇文章《跟着数百万人编程导师学C语言!》,介绍的是泽德 A. 肖大神的新书《“笨办法”学C语言》很多用户在后台留言,《“笨办法”学Python 3》什么时候出版?今天这本书终...

异步社区
06/06
0
0
剪刀石头布小习题三种语言python2、php、go代码

剪刀石头布小习题三种语言python2、php、go代码 # coding:utf-8 """ python核心编程6-14习题的解题思路 设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则. 你和...

黄哥Python培训
2015/02/10
0
0
python核心编程6-14习题的解题思路修改版

python核心编程6-14习题的解题思路修改版 #coding:utf-8 """ python核心编程6-14习题的解题思路 设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.你和你的对手...

黄哥Python培训
2014/02/10
0
1
零基础小白入门Python,值得看的几本书籍

Python目前是全球4大流行编程语言之一,根据今年TIOBE最新排名,Python已超越C#,与Java,C,C++一起成为全球前4大最流行语言,指数变化一直呈现出上升的趋势。 TIOBE最新排名 众所周知,Pyt...

dcpeng
08/30
0
0
python3测试工具开发快速入门教程2数据结构1变量与赋值

语法基础 解释器像简单的计算器:可以输入表达式,它会返回值。表达式语法很简单:运算符 + , - , * 和 / 与其它语言一样(例如Pascal或C);括号用于分组。例如: 整数(例如2、4、20 )的类型...

人工智能python自动化测试
08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
5
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部