Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82436
  • 博文数量: 40
  • 博客积分: 1820
  • 博客等级: 上尉
  • 技术积分: 395
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 16:12
文章分类

全部博文(40)

文章存档

2011年(8)

2010年(32)

我的朋友

分类: Python/Ruby

2011-05-02 23:11:03

    最近工作比较忙。。每天都是10点以后回来,基本上也就洗洗睡了。。。又是N多天没看这个,趁着今天有时间再学一学!
Excercise5:More Variables And Printing
    本节主要是讲了一下格式化字符串。如同我之前经常说的那样,有C这样高级语言的基础的人非常容易理解。所谓“格式化字符串”,就是将字符串按照一定的格式作为输出(当然,在下面的例子中主要是输出到标准输出中,表现为显示在屏幕上)。在C中,以printf函数为例,主要有%d,%c,%f,%s等等。不做任何赘述,在python中也是一样的,值得注意的是,python中有一个%r的格式符(在C中我没有见过,如果谁见着C中也有类似的东西,麻烦告知一下哈),本书对此的描述是“无论是什么都进行print”(It's like saying "print this no matter what")
    格式化的写法与C不太一样,在print后面的字符串后面用“%”加上变量即可,如果有多个变量,用括号括住,变量之间用逗号隔开即可。
    另外,我突然注意到一点(记性比较差,不知道以前注没注意过。。。)print一次输出一行,然后进行换行,而C中要加上“\n”,经过试验,发现“\n”在python中也起到同样的换行作用,就是说在print后面的双引号中的最后加上“\n”,那么就在原有换行的基础上再换一行,表现为本行和下一个print显示的内容中间隔了一个空行。
    本节的代码:

my_name = "Zed A. Shaw"
my_age = 35 # not a lie
my_height = 74.0 #inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'

print "Let's talk about %s." % my_name
print "He's %d inches tall." % my_height
print "He's %d pounds heavy." % my_weight
print "Actually that's not too heavy."
print "He's got %s eyes and %s hair." % (my_eyes, my_hair)
print "His teeth are usually %s depending on the coffee." % my_teeth

#this line is tricky try to get it exactly right
print "If I add %d, %d, and %d I get %d." % (my_age, my_height, my_weight, my_age + my_height + my_weight)

    需要注意的一点:%r的使用。以下面的代码为例

print "His teeth are usually %s depending on the coffee." % my_teeth

    输出为“His teeth are usually White depending on the coffee.”如果把其中的"%s"改为"%r",则输出为“His teeth are usually 'White' depending on the coffee.”居然多了一对单引号。。。
     如果改为如下代码:

my_teeth = "White"
print "His teeth are usually %s depending on the coffee." % my_teeth

    结果也是“His teeth are usually 'White' depending on the coffee.”具体的原因没有查明。。。google了半天,就先暂时放弃了。。。。

Excercise6:Strings And Text
    有趣的东西终于出现了!本节开始的时候先将之前注意到的一些东西做了简单的介绍。比如,Python中将字符用双引号或单引号括起来就成为了字符串;字符串可以包含格式化字符;在字符串中打印出多个变量使用括号括起来然后以逗号隔开。
    下面的代码有些有趣的地方:

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

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 is the left side of..."
e = "a string with a right side."
print w + e

    在python中,字符串仿佛是C语言中的宏定义(marco)!就是说,你定义了一个字符串的变量,无论你在什么时候什么地方使用它,都仿佛是在直接操作这个字符串一般!当然这么说是完全错误的,宏定义其实只是一个文本替换,但是Python中肯定不是简单的文本替换,比如第一条代码,本条语句之后,x的只应该是“There are 10 types of people.”而不是“"There are %d types of people." % 10”,下面的语句主要再次说明了“%r”格式字符,在这里发现了一个有趣的现象,按照语句

print "I said: %r." % x

    输出是“I said: 'There are 10 types of people.'.”,如果改成

print "I said: '%r'." % x

    即给%r加上单引号,输出为“I said: ''There are 10 types of people.''.”。里面的是两对单引号,仿佛在输出字符串时,%r的效果相当于输出‘%s’一样。语句

print "I also said: '%s'." % y

    输出为“I also said: 'Those who know %s and those who don't.'.”。若将‘%s’改为%r,输出为“I also said: "Those who know %s and those who don't.".”,注意!这里的嵌套的字符串变成了由双引号括起来了!就是说我们之前关于%r和‘%s’的关系就不再成立了。。这就又回到了之前的问题:%r到底是怎么用的?估计在后续的学习中会提到吧,就暂时让我们拭目以待。
    再往后的代码,joke_evaluation的使用更像宏定义了,最后的一个print语句说明可以通过加号(+)将两个字符串进行连接。
    时间也不早了,今儿就先这样把。。。明儿还得接着上班。。。。
阅读(1776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~