核心语言学无编程基础入门Python(第二章)

建议先看完前面的章节,前面章节内容:

  1. 和Python好好谈一谈(print)
  2. Python你帮我省省心啊(=)

3 把文字扭一扭(关于string的命令)

知道数字(number)和字串(string)有区别,好像暂时对核心语言学也没什么用。特别是数字(number),真是一点卵用也没有。和语言、文字有点关系的好像就只有字串(string)。想想看自己为什么要学Python,最初大概也就是想把海量文字大小写换一换,标点符号删一删,把不需要的几个字母删一删,找找一些组合在哪里,或者提取中间几个字母之类的。

要实现这些功能,最基本的是字串命令。字串命令数量很多,不过大概的结构都是

字串.某命令(某参数)

(还是想多一句嘴,字串可以是临时用引号手写出来的(加””),也可以之前就赋值过的一个变量,比如下面的a)

从查找find这个命令入手吧:

[code language=”python”]
#脚本1
a="Python so easy"
a.find("so")
# =>
[/code]

这段脚本翻译一下就是说,在a这个字串里(注:请把空格也理解为字串里的一个字符)查找so这个字串(其实是”so”)。不过上面这段脚本有个问题,Python只是自己在系统里面查了一下a这个字串里面有没有”so”,但是【没有给我任何反馈】,自己在内存里掖着藏着。怎么办呢,先把a.find(“so”)的结果【找个地方存一下/(赋值!)】,然后再print一下就好。

[code language=”python”]
#脚本2:
a="Python so easy"
b=a.find("so")
print b
# => 7
[/code]

运行上面这个脚本,显示结果是7,意思是Python在a这个长字串的第「7」个位置,终于找到了”so”,Python计算的方式和common sense有点不一样,是按照0123456789这个顺序来的。所以它所谓的「7」其实是第八个字符。顺带一提,如果找不到,回复的结果是-1(脚本3)。这个故事告诉我们,【字串命令一般是存在内存里的,把结果存到一个变量里,是保存结果的一个方法。】

[code language=”python”]
#脚本3:
a="Python so easy"
b=a.find("is")
print b
# => -1
[/code]

一些有用的字串命令,要被扭来扭去的字串就默认为a了(注:a=”Python so easy”)。
a.lower() 全部改成小写(记得存到某个地方=,以下同理)
a.upper() 全部改成大写
a.swapcase() 大写改小写,小写改大写
a.count("y") 计算”y”出现过几次
a.strip("y") 把开头或结尾的”y”删了
a.replace("P","p") 把”P”换成”p”
",".join(a) a字串中每一个字符后面加一个”,”

字串命令是可以连写的 a.upper().count(“p”) 全部改成大写之后再计算”p”出现过几次。其他有用的字串命令可以在这里找。


4 让别人也来参与一下(raw_input)

会了简单的字串命令后,就可以做小程序了-_-

在我们做小程序的道路上,现在遇到最大的阻力是没办法进行更灵活的人机互动,简而言之就是,具体的操作步骤已经限定死了,【我编的脚本只有我认识,别人也用不了】。所以我们要开个口,在「脚本被运行过程中」,也能找机会让新的变量被写进来。这个时候要用到raw_input这个命令(注:好像Python3.x里只要用input就行了,真是高级)。raw_input的用法是:

ck=raw_input("what are you looking for? ")

Python读到这行的时候,会问运行这个脚本的人,有什么想被写入到ck这个变量里。可是要千万注意,现在被写入到ck的是一个字串。什么?想输入的其实是一个数字,那用int()改成数字就行了(或者float)。

ck=int(raw_input("what are you looking for? "))

还是实战最能锻炼人,来做一个【在特定文本里计算某一个字串出现的次数】的小程序吧。

从Python的维基百科上抄一段话下来随便找找。

[code language=”python”]
#脚本4:
text="Python is a widely used general-purpose, high-level programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java. The language provides constructs intended to enable clear programs on both a small and large scale."
text=text.lower()
ck=raw_input("what are you looking for? ")
b=text.count(ck)
print b
# =>
[/code]


小抄:字串.某命令(某参数),raw_input

 

ynshen