python学习入门:字符串函数的使用说明

翻译:淘特

本章涵盖的主题:

 字符串

 字符串连接和复制

 使用IDLE编写源代码。

 在IDLE中保存和运行程序。

 print() 函数

 input() 函数

 Comments

在本章中,我们将学习如何在变量中存储文本,将文本组合在一起,并在屏幕上显示文本。我们还将制作我们的第一个程序,用"Hello World!"文本向用户致意,并让用户输入姓名。

字符串

在Python中,我们使用的文本称为字符串值(或简称字符串)。我们所有的密码和黑客程序都处理字符串值,将明文变为"一个是陆地,一个是空间"。变成像'Tqe kg im npqv,jst kg im oapxe'这样的密文。。明文和密文在我们的程序中表示为字符串值,Python代码可以操纵这些值的方式很多。

我们可以将字符串值存储在变量中,就像整数和浮点值一样。当我们键入字符串时,我们将它们放在两个单引号(')之间以显示字符串开始和结束的位置。在交互式shell中输入:

>>> spam = 'hello'

>>>

单引号不是字符串值的一部分。Python知道'hello'是一个字符串,而spam是一个变量,因为字符串被引号括起来,而变量名不是。

如果您在shell中键入spam,您应该会看到spam变量('hello'字符串)的内容。这是因为Python会将变量计算为其中存储的值:在这种情况下,字符串为'hello'。

>>> spam = 'hello'

>>> spam

'hello'

>>>

字符串几乎可以包含任何键盘字符。(我们稍后会讨论特殊的"转义字符"。)这些都是字符串的例子:

>>> 'hello'

'hello'

>>> 'Hi there!'

'Hi there!'

>>> 'KITTENS'

'KITTENS'

>>> ''

''

>>> '7 apples, 14 oranges, 3 lemons'

'7 apples, 14 oranges, 3 lemons'

>>> 'Anything not pertaining to elephants is irrelephant.'

'Anything not pertaining to elephants is irrelephant.'

>>> 'O*&#wY%*&OcfsdYO*&gfC%YO*&%3yc8r2'

'O*&#wY%*&OcfsdYO*&gfC%YO*&%3yc8r2'

注意''字符串中有零个字符; 单引号之间没有任何内容。这称为空字符串空字符串

使用+运算符进行字符串连接

您可以使用+运算符将两个字符串值添加到一个新字符串值中。这样做称为字符串连接。尝试在命令行中输入' Hello'+'World! ':

>>> 'Hello' + 'World!'

'HelloWorld!'

>>>

要在"Hello"和"World!"之间添加一个空格,请在"Hello"字符串的末尾和单引号前面添加一个空格,如下所示:

>>> 'Hello ' + 'World!'

'Hello World!'

>>>

请记住,Python将精确地连接你告诉它连接的字符串。如果在结果字符串中需要空格,则两个原始字符串之一中必须有空格。

+操作符可以连接两个字符串值到一个新的字符串值("你好" +"世界!"到"世界,你好!"),就像它可以增加两个整数值到一个新的整数值(2 + 2 至4) 。 由于值的数据类型,Python知道+运算符应该做什么。每个值都是有它的数据类型。值"Hello"的数据类型是一个字符串。值5的数据类型是整数。告诉我们(和计算机)数据的数据类型是什么样的数据。

+操作者可以在表达式中使用具有两个字符串或两个整数。如果您尝试使用字符串值和整数值的+运算符,则会出现错误。在交互式shell中键入以下代码:

>>> 'Hello' + 42

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: Can't convert 'int' object to str implicitly

>>> 'Hello' + '42'

'Hello42'

>>>

使用*运算符进行字符串复制

您还可以在字符串和整数上使用*运算符来执行字符串复制。这将复制(即重复)一个字符串,但是整数值是多少倍。在交互式shell中键入以下内容:

>>> 'Hello' * 3

'HelloHelloHello'

>>> spam = 'Abcdef'

>>> spam = spam * 3

>>> spam

'AbcdefAbcdefAbcdef'

>>> spam = spam * 2

>>> spam

'AbcdefAbcdefAbcdefAbcdefAbcdefAbcdef'

>>>

*操作符可以用两个整数值(将它们相乘)工作。它也可以使用字符串值和整数值(它将复制字符串)。但它不能使用两个字符串值,这会导致错误:

>>> 'Hello' * 'world!'

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: can't multiply sequence by non-int of type 'str'

>>>

字符串连接和字符串复制显示的是,Python中的运算符可以根据它们所操作的值的数据类型执行不同的操作。+ 操作符可以做加法或字符串连接。* 操作符可以做乘法或字符串复制。

使用print() 函数打印值

还有另一种称为print()函数调用的Python指令。在交互式shell中键入以下内容:

>>> print('Hello!')

Hello!

>>> print(42)

42

>>>

函数(如上例中的print())具有执行任务的代码,例如在屏幕上打印值。Python有许多不同的函数。要调用 一个函数意味着执行函数内部的代码。

在上面的例子中的指令的值传递给print()函数中,并且print()函数将打印值到屏幕上。调用函数时传递的值称为参数。(参数与数值相同,当传递给函数调用时,我们只是调用这些值。)当我们开始编写程序时,我们在屏幕上显示文本的方式是使用print() 函数。

您可以将表达式传递给print() 函数而不是单个值。这是因为实际传递给print()函数的值是该表达式的评估值。在交互式shell中尝试此字符串连接表达式:

>>> spam = 'Al'

>>> print('Hello, ' + spam)

Hello, Al

>>>

'Hello, ' + spam表达式计算结果为字符串值'Hello, Al'。此字符串值是传递给print()函数调用的值。

字符转化

有时候我们可能想要使用一个不容易输入字符串值的字符。例如,我们可能希望将单引号字符作为字符串的一部分。但是我们会收到一条错误消息,因为Python认为单引号是结束字符串值的引号,而后面的文本是错误的Python代码,而不是字符串的其余部分。在交互式shell中键入以下内容:

>>> print('Al's cat is named Zophie.')

File "<stdin>", line 1

print('Al's cat is named Zophie.')

^

SyntaxError: invalid syntax

>>>

要在字符串中使用单引号,我们需要使用转义字符。转义字符是反斜杠字符,后跟另一个字符。例如,\ t,\ n 或\'。斜杠告诉Python,斜线后面的字符具有特殊含义。在交互式shell中键入以下内容:

>>> print('Al\'s cat is named Zophie.')

Al's cat is named Zophie.

>>>

转义字符可帮助我们打印难以在源代码中键入的字母。表4-1显示了Python中的一些转义字符:

表4-1。转义字符

反斜杠始终位于转义字符的前面,即使您只想在字符串中使用反斜线。这行代码不起作用:

>>> print('He flew away in a green\teal helicopter.')

He flew away in a green eal helicopter.

这是因为"teal"中的"t"被视为反斜杠之后的转义字符。转义字符\t模拟按键盘上的Tab键。转义字符在那里,以便字符串可以包含无法输入的字符。

相反,尝试下面的代码:

>>> print('He flew away in a green\\teal helicopter.')

He flew away in a green\teal helicopter.

单引号和双引号

字符串并不总是必须在Python中的两个单引号之间。您可以改用双引号。这两行打印相同的东西:

>>> print('Hello world')

Hello world

>>> print("Hello world")

Hello world

但是你不能混用单引号和双引号。这一行会给你一个错误:

>>> print('Hello world")

SyntaxError: EOL while scanning single-quoted string

>>>

我喜欢使用单引号,因此我不必按住键盘上的Shift键来输入它们。输入起来比较容易,而且电脑也不在乎。

但是请记住,就像你必须使用转义字符 ''在单引号中包含一个字符串中的单引号一样,你需要转义字符\" 来在由双引号括起来的字符串中有一个双引号。例如,看看这两行:

>>> print('I asked to borrow Alice\'s car for a week. She said, "Sure."')

I asked to borrow Alice's car for a week. She said, "Sure."

>>> print("She said, \"I can't believe you let him borrow your car.\"")

She said, "I can't believe you let him borrow your car."

您不需要在单引号字符串中转义双引号,并且您不需要在双引号字符串中转义单引号。Python解释器很聪明,知道如果一个字符串以一种引号开头,另一种引用并不意味着字符串结束。

索引

您的加密程序通常需要从字符串中获取单个字符。索引是将方括号[和]添加到字符串值(或包含字符串的变量)的末尾,并在它们之间加上数字。这个数字被称为索引,并告诉Python在字符串中哪个位置有你想要的字符。字符串中第一个字符的索引是0。索引1用于第二个字符,索引2用于第三个字符,依此类推。

在交互式shell中键入以下内容:

>>> spam = 'Hello'

>>> spam[0]

'H'

>>> spam[1]

'e'

>>> spam[2]

'l'

请注意,表达式spam [0]的 计算结果为字符串值'H',因为H是字符串'Hello'中的第一个字符。请记住,索引从0开始,而不是1.这就是H的索引为0而不是1的原因。

图4-1。字符串'Hello'及其索引。

索引可以与包含字符串值或字符串值的变量(如"Zophie")一起使用。在交互式shell中输入以下内容:

>>>'Zophie'[2]

'P'

表达式'Zophie'[2] 计算字符串值'p'。这个'p'字符串就像任何其他字符串值一样,可以存储在变量中。在交互式shell中键入以下内容:

>>> eggs = 'Zopie'[2]

>>> eggs

'p'

>>>

如果输入的索引对于字符串来说太大,Python将显示"索引超出范围"错误消​​息。字符串'Hello'中只有5个字符。如果我们尝试使用索引10,那么Python将显示一个错误,指出我们的索引"超出范围":

>>> 'Hello'[10]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

IndexError: string index out of range

>>>

负指数

负指标从字符串的末尾开始并向前。负号索引-1是字符串中最后一个字符的索引 。索引-2是倒数第二个字符的索引,依此类推。

在交互式shell中键入以下内容:

>>> 'Hello'[-1]

'o'

>>> 'Hello'[-2]

'l'

>>> 'Hello'[-3]

'l'

>>> 'Hello'[-4]

'e'

>>> 'Hello'[-5]

'H'

>>> 'Hello'[0]

'H'

>>>

请注意,-5和0是同一字符的索引。大多数情况下,您的代码将使用正索引,但有时使用负索引会更容易。

截取字符

如果您想从字符串中获取多个字符,则可以使用slicing而不是索引。slicing也使用[和]方括号但具有两个整数索引,而不是一个。这两个指标是由一个独立的:冒号。在交互式shell中键入以下内容:

>>> 'Howdy'[0:3]

'How'

>>>

slicing评估的字符串从第一个索引开始,然后上升到第二个索引,但不包括第二个索引。字符串值'Howdy'的0索引 是H,3索引是d。由于切片达到但不包括第二个索引,因此切片'Howdy'[0:3]计算为字符串值'How'。

尝试在交互式shell中键入以下内容:

>>> 'Hello world!'[0:5]

'Hello'

>>> 'Hello world!'[6:12]

'world!'

>>> 'Hello world!'[-6:-1]

'world'

>>> 'Hello world!'[6:12][2]

'r'

>>>

请注意,表达式'Hello world!'[6:12] [2]首先评估为'world!'[2] ,这是一个进一步计算为'r'的索引。

与索引不同,如果给它一个索引太大的字符串,slicing永远不会给你一个错误。它只会返回最宽的匹配切片:

>>> 'Hello'[0:999]

'Hello'

>>> 'Hello'[2:999]

'llo'

>>> 'Hello'[1000:2000]

''

>>>

表达式'Hello'[1000:2000] 返回一个空白字符串,因为索引1000在字符串结尾之后,所以这个切片可能不包含可能的字符。

空白Slice索引

如果省略切片的第一个索引,Python会自动认为您要为第一个索引指定索引0。表达式'Howdy'[0:3]和'Howdy'[:3]评估相同的字符串:

>>> 'Howdy'[:3]

'How'

>>> 'Howdy'[0:3]

'How'

>>>

如果省略第二个索引,Python会自动认为您要指定字符串的其余部分:

>>> 'Howdy'[2:]

'wdy'

>>>

Slicing 是从较大字符串获取"子串"的简单方法。(但实际上,"子串"仍然只是一个字符串值,就像任何其他字符串一样。)尝试在shell中输入以下内容:

>>> myName = 'Zophie the Fat Cat'

>>> myName[-7:]

'Fat Cat'

>>> myName[:10]

'Zophie the'

>>> myName[7:]

'the Fat Cat'

>>>

在IDLE的文件编辑器中编写程序

到目前为止,我们一直在向交互式shell中键入一条指令。当我们编写程序时,我们输入了几条指令,并让它们在没有等待下一条指令的情况下运行。让我们写我们的第一个程序!

该软件程序提供交互shell名字叫做IDLE,除了名为文件编辑器的交互式shell外,IDLE还有另一部分内容。

在Python shell窗口的顶部,单击 文件新窗口。一个新的空白窗口会显示给我们输入我们的程序。这个窗口是文件编辑器。文件编辑器窗口的右下角将显示光标当前位于文件中的行和列。

图4-2。文件编辑器窗口。光标位于第1行第0列。

您始终可以区分文件编辑器窗口和交互式shell窗口,因为交互式shell将始终包含>>> 提示符。

Hello World!

程序员学习新语言的传统是让他们的第一个程序在屏幕上显示"Hello world!"文本。我们现在将创建我们自己的Hello World程序。

在新文件编辑器窗口中输入以下文本。我们把这个文本称为程序的源代码,因为它包含了Python将遵循的指令,以确定程序应该如何表现。

Hello World的源代码

hello.py

1. # This program says hello and asks for my name.

2. print('Hello world!')

3. print('What is your name?')

4. myName = input()

5. print('It is good to meet you, ' + myName)

IDLE程序将为不同类型的指令提供不同的颜色。键入此代码后,窗口应如下所示:

图4-3。在键入代码后,文件编辑器窗口将如下所示。

保存您的程序

一旦你输入了你的源代码,保存它,这样你就不用每次启动IDLE时重新输入它。为此,请从"文件编辑器"窗口顶部的菜单中选择" 文件另存为"。另存为窗口应该打开。在文件名字段中输入hello.py,然后点击保存。(见图4-4)

键入时应该每隔一段时间保存一次程序。这样,如果计算机崩溃或您意外退出IDLE,您将不会丢失您键入的所有内容。作为快捷方式,您可以在Windows和Linux上按Ctrl-S或在OS X上按⌘-S来保存文件。

运行你的程序

现在是时候运行我们的程序了。点击运行运行模块或仅需按F5键盘上的键。您的程序应该在首次启动IDLE时出现的shell窗口中运行。请记住,您必须从文件编辑器的窗口按F5,而不是交互式shell的窗口。

当您的程序询问您的姓名时,请继续输入,如图4-5所示:

图4-5。运行"Hello World"程序时,交互式shell的显示。

现在,当您按Enter时,程序应该按名称向您(用户,即使用该程序的用户)致意。恭喜!你已经编写了你的​​第一个程序。你现在是一个初学的计算机程序员。(如果您愿意,可以再次按F5再次运行此程序。)

如果你得到一个如下所示的错误:

Hello world!

What is your name?

Albert

Traceback (most recent call last):

File "C:/Python27/hello.py", line 4, in <module>

myName = input()

File "<string>", line 1, in <module>

NameError: name 'Albert' is not defined

......

这意味着你正在用Python 2而不是Python 3运行程序。Python要求输入函数在接受变量时要以''包含起来,比如 你输入'Albert'就没问题了。

打开您保存的程序

单击顶角的X关闭文件编辑器。要重新加载保存的程序,请从菜单中选择文件打开。现在就这样做,并在出现的窗口中选择 hello.py并按下打开按钮。您保存的hello.py 程序应在"文件编辑器"窗口中打开。

"Hello World"计划如何运作

我们输入的每一行都是一条指示,告诉Python准确地做什么。计算机程序很像一个配方。先做第一步,然后做第二步,等到最后。按顺序执行每条指令,从程序的最顶层开始,按照指令列表进行操作。程序执行第一行指令后,它会继续执行第二行,然后执行第三行,依此类推。

我们按程序执行程序执行,或简称执行程序。执行从第一行代码开始,然后向下移动。执行可以跳过而不是从上到下,我们将在下一章找到如何实现这一点。

让我们一行一行地查看我们的程序,看看它在做什么,从第1行开始。

注释

hello.py

1. #这个节目打招呼并问我的名字。

这一行被称为注释。注释不是针对计算机,而是针对您。电脑忽略它们。它们用于提醒您程序执行的是什么,或者告诉其他可能查看代码的人员您的代码试图执行的操作。#符号后面的任何文字(称为井号)都是注释。程序员通常在他们的代码顶部发表注释,以给程序一个标题。IDLE程序以红色文本显示评论以帮助他们脱颖而出。

函数

一个功能有点像你的程序中一个小程序。它包含从上到下执行的代码行。Python提供了一些我们可以使用的内置函数(您已经使用了print()函数)。关于函数的伟大之处在于我们只需要知道函数的作用,但不知道它是如何实现的。(您需要知道print()函数在屏幕上显示文本,但您不需要知道它是如何做到的。)

一个函数调用是一段代码,它告诉我们的程序运行函数中的代码。例如,只要你想在屏幕上显示一个字符串,你的程序就可以调用print()函数。的打印()函数将你作为输入在括号之间键入值和在屏幕上显示的文本。因为想要显示Hello World!在屏幕上,我们键入打印函数名称,后面跟着一个左括号,然后是'Hello world!'。字符串和右括号。

Print()函数

hello.py

2. print('Hello world!')

3. print('What is your name?')

这一行是对print() 函数的调用(将要打印的字符串放在括号内)。我们在函数名的末尾添加括号,以明确我们指的是名为print()的函数,而不是名为print的变量。函数结尾处的括号让我们知道我们正在讨论一个函数,就像'42'周围的引号告诉我们我们正在谈论字符串'42'而不是整数42。

第3行是另一个print() 函数调用。这次,程序显示"你叫什么名字?"

Input()函数

hello.py

4. myName = input()

第4行有一个赋值语句,其中包含一个变量(myName)和一个函数调用(input())。当调用input()时,程序将等待用户输入一些文本并按Enter键。用户输入的文本字符串(它们的名称)将成为存储在myName中的字符串值。

与表达式一样,函数调用也为返回值。(事实上​​,我们也可以使用单词"returns"来表示函数调用与"evaluate"相同的事情。)在这种情况下,input()函数的返回值是用户输入的字符串 - 他们的名称。如果用户在Albert中键入,则input() 函数调用将评估(即返回)字符串'Albert'。

名为input()的函数不需要任何参数(与print()函数不同),这就是为什么括号之间没有任何内容。

hello.py

5. print('It is good to meet you, ' + myName)

对于第5行的print()调用,我们使用加号运算符(+)连接字符串' It is good to meet you '和存储在myName变量中的字符串,这是我们用户输入到程序中的名称。这就是我们如何让程序以名字迎接我们。

结束程序

一旦程序执行最后一行,它就会停止。此时它已终止退出,计算机忘记了所有变量,包括我们存储在myName中的字符串。如果您再次尝试运行程序并键入其他名称,则会打印该名称。

Hello world!

What is your name?

Alan

It is good to meet you, Alan

请记住,计算机只执行你编程的任务。在这个程序中,它被编程为询问您的姓名,让您键入一个字符串,然后打个招呼并显示您键入的字符串。

但电脑很笨。该程序不关心你是否输入你的名字,别人的名字,或只是愚蠢的东西。你可以输入你想要的任何东西,电脑会以同样的方式处理它:

Hello world!

What is your name?

poop

It is good to meet you, poop

总结

本章中你已经汇总了几个Python指令来制作一个完整的程序,询问用户的名字,然后问候它们。

后面的所有程序都会更加复杂,但不用担心。这些程序将全部逐行解释。而且,您始终可以将指令输入到交互式shell中,以便在将它们全部放入完整程序之前查看它们的操作。

举报
评论 0