Python 编程/变量和字符串
在本节中,您将被介绍两种不同的 Python 数据类型:变量和字符串。请通过运行包含的程序并检查其输出,跟着学习。
变量是存储可能变化的值的东西。简单来说,变量就像一个盒子,你可以把东西放进去。你可以使用变量来存储各种东西,但现在,我们只关注将数字存储在变量中。
lucky = 7
print (lucky)
7
这段代码创建了一个名为lucky
的变量,并将整数7
分配给它。当我们要求 Python 告诉我们变量lucky
中存储了什么时,它会再次返回该数字。
我们也可以更改变量内部的内容。例如
changing = 3
print (changing)
3
changing = 9
print (changing)
9
different = 12
print (different)
12
print (changing)
9
changing = 15
print (changing)
15
我们声明一个名为changing
的变量,在其中放入整数3
,并验证分配是否正确完成。然后,我们将整数9
分配给changing
,并再次询问changing
中存储了什么。Python 已经丢弃了3
,并用9
替换了它。接下来,我们创建一个第二个变量,我们称之为different
,并将12
放入其中。现在我们有两个独立的变量,different
和changing
,它们保存着不同的信息,即,为其中一个分配新值不会影响另一个。
您还可以将一个变量的值设置为另一个变量的值。例如
red = 5
blue = 10
print (red, blue)
5 10
yellow = red
print (yellow, red, blue)
5 5 10
red = blue
print (yellow, red, blue)
5 10 10
要理解这段代码,请记住,变量的名称始终位于等号(赋值运算符)的左侧,而变量的值位于等号的右侧。先写名称,后写值。
我们首先声明red
是5
,blue
是10
。如您所见,您可以向print
传递多个参数,告诉它在一行上打印多个项目,并用空格分隔它们。正如预期的那样,Python 报告red
存储5
,blue
保存10
。
现在我们创建一个第三个变量,叫做yellow
。为了设置它的值,我们告诉 Python 我们希望yellow
是red
的值。(记住:名称在左边,值在右边。)Python 知道red
是5
,所以它也设置yellow
为5
。
现在我们将red
变量设置为blue
变量的值。不要混淆——名称在左边,值在右边。Python 查找blue
的值,发现它是10
。因此,Python 丢弃了red
的旧值(5
),并用10
替换了它。在这次赋值之后,Python 报告yellow
是5
,red
是10
,blue
是10
。
但是我们不是说yellow
应该是red
的值吗?yellow
仍然是5
而red
是10
的原因是,我们只说yellow
应该是red
在赋值那一刻的值。在 Python 弄清楚red
是什么并将该值分配给yellow
之后,yellow
就不再关心red
了。yellow
现在有一个值,并且该值将保持不变,无论red
发生什么。
对于变量的名称,它只能包含大写和小写字母(A-Z、a-z)、数字(0-9)和下划线字符(_),并且名称的第一个字符不能是数字。例如,1abc
和_#$ad
不是有效的变量名,而_123
和a__bc
是有效的变量名。
'字符串'仅仅是一个按顺序排列的字符列表。一个字符是您可以在键盘上一次按键输入的任何东西,例如字母、数字或反斜杠。例如,“hello
”是一个字符串。它有五个字符长——h
、e
、l
、l
、o
。字符串也可以包含空格:“hello world
”包含 11 个字符:10 个字母和“hello
”和“world
”之间的空格。字符串中可以包含的字符数量没有限制——您可以包含一个到一百万个或更多个字符。您甚至可以有一个包含 0 个字符的字符串,这通常称为“空字符串”。
在 Python 中,您可以用三种方式声明字符串:单引号 ('
)、双引号 ("
) 和三引号 ("""
)。在所有情况下,您都用选择的字符串声明符开始和结束字符串。例如
>>> print ('I am a single quoted string')
I am a single quoted string
>>> print ("I am a double quoted string")
I am a double quoted string
>>> print ("""I am a triple quoted string""")
I am a triple quoted string
您可以在字符串中使用引号,方法是在引号之前放置一个反斜杠,这样 Python 就会知道您想要将引号包含在字符串中,而不是在那里结束字符串。在另一个符号之前直接放置反斜杠被称为对该符号进行转义。
>>> print ("So I said, \"You don't know me! You'll never understand me!\"")
So I said, "You don't know me! You'll never understand me!"
>>> print ('So I said, "You don\'t know me! You\'ll never understand me!"')
So I said, "You don't know me! You'll never understand me!"
>>> print ("""The double quotation mark (\") is used to indicate direct quotations.""")
The double quotation mark (") is used to indicate direct quotations.
如果您想在字符串中包含反斜杠,则必须对该反斜杠进行转义。这告诉 Python 您想要将反斜杠包含在字符串中,而不是将其用作转义字符。例如
>>> print ("This will result in only three backslashes: \\ \\ \\")
This will result in only three backslashes: \ \ \
如您从上面的例子中看到的,只有用于引用字符串的特定字符需要转义。这使得代码更易读。
要了解如何使用字符串,让我们回顾一下一个熟悉的程序
>>> print("Hello, world!")
Hello, world!
看看!从一开始您就在使用字符串了!
您可以使用+
运算符将两个字符串加在一起:这称为连接它们。
>>> print ("Hello, " + "world!")
Hello, world!
请注意,第一个字符串的末尾有一个空格。如果您不加进去,这两个词就会连在一起,最终会得到Hello,world!
您还可以使用*
运算符重复字符串,如下所示
>>> print ("bouncy " * 5)
bouncy bouncy bouncy bouncy bouncy
>>> print ("bouncy " * 10)
bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy
字符串bouncy
在第一个例子中被重复了 5 次,在第二个例子中被重复了 10 次。
如果您想找出字符串的长度,可以使用len()
函数,它只接受一个字符串并计算其中的字符数。(len
代表“长度”。)只需将要查找长度的字符串放在函数的括号内即可。例如
>>> print (len("Hello, world!"))
13
现在您已经了解了变量和字符串,让我们看看它们如何协同工作。
变量可以存储的不仅仅是数字。您也可以使用它们来存储字符串!以下是方法
question = "What did you have for lunch?"
print (question)
What did you have for lunch?
在这个程序中,我们创建了一个名为question
的变量,并将字符串“What did you have for lunch?
”存储在其中。然后,我们只是告诉 Python 打印出question
变量中的内容。请注意,当我们告诉 Python 打印出question
时,question
周围没有引号:这告诉 Python 我们正在使用一个变量,而不是一个字符串。如果我们在question
周围加上引号,Python 会将其视为一个字符串,如下所示
question = "What did you have for lunch?"
print ("question")
question
让我们尝试一些不同的东西。当然,询问用户午餐吃了什么很好,但如果他们不能回应,就没有多大区别!让我们编辑这个程序,以便用户可以输入他们吃的东西。
question = "What did you have for lunch?"
print (question)
answer = raw_input() #You should use "input()" in python 3.x, because python 3.x doesn't have a function named "raw_input".
print ("You had " + answer + "! That sounds delicious!")
为了要求用户写下一些东西,我们使用了名为raw_input()
的函数,它会一直等待用户写下内容并按下回车键,然后返回用户写下的内容。不要忘记括号!即使括号里面没有内容,它们也很重要,如果省略括号,Python 会报错。您还可以使用另一个名为input()
的函数,它的工作方式几乎相同。我们将在后面学习这两个函数之间的区别。
在这个程序中,我们创建了一个名为 answer
的变量,并将用户输入的任何内容放入其中。然后,我们打印出一个新字符串,其中包含用户输入的任何内容。注意 "You had
" 字符串末尾的空格,以及 "! That sounds delicious!
" 字符串开头的感叹号。它们有助于格式化输出并使其看起来美观,这样字符串就不会全部连在一起。
看看这个程序,看看你是否能弄清楚它应该做什么。
print ("Please give me a number: ")
number = raw_input()
plusTen = number + 10
print ("If we add 10 to your number, we get " + plusTen)
这个程序应该从用户那里获取一个数字,加上 10,然后打印出结果。但是,如果你尝试运行它,它将无法正常工作!你将得到一个类似于此的错误
Traceback (most recent call last): File "test.py", line 5, in <module> print "If we add 10 to your number, we get " + plusTen TypeError: cannot concatenate 'str' and 'int' objects
这里发生了什么?Python 告诉我们有一个 TypeError
,这意味着信息类型使用有问题。具体来说,Python 无法弄清楚如何协调同时使用的两种数据类型:整数和字符串。例如,Python 认为 number
变量保存的是一个字符串,而不是一个数字。如果用户输入 15
,那么 number
将包含一个包含两个字符的字符串:一个 1
,后面跟着一个 5
。那么我们如何告诉 Python 15
应该是一个数字,而不是一个字符串呢?
此外,在打印答案时,我们告诉 Python 将一个字符串 ("If we add 10 to your number, we get
") 和一个数字 (plusTen
) 连接在一起。Python 不知道如何做到这一点——它只能将字符串连接在一起。我们如何告诉 Python 将一个数字视为一个字符串,以便我们可以将其与另一个字符串一起打印出来?
幸运的是,有两个函数是这些问题的完美解决方案。int()
函数将接受一个字符串并将其转换为整数,而 str()
函数将接受一个整数并将其转换为字符串。在这两种情况下,我们都将要更改的内容放在括号中。因此,我们修改后的程序将如下所示
print ("Please give me a number:",)
response = raw_input()
number = int(response)
plusTen = number + 10
print ("If we add 10 to your number, we get " + str(plusTen))
关于字符串和变量,你只需要知道这些!我们将在后面学习更多关于类型的知识。
print()
:将输出信息打印给用户input()
或raw_input()
:向用户询问响应,并返回该响应。(请注意,在版本 3.x 中,raw_input()
不存在,已被input()
取代)len()
:返回字符串的长度(字符数)str()
:返回对象的字符串表示int()
:给定一个字符串或数字,返回一个整数
- 编写一个程序,要求用户输入一个字符串,然后告诉用户该字符串的长度。
- 向用户询问一个字符串,然后询问一个数字。打印出该字符串,打印该数字次数。(例如,如果字符串是
hello
并且数字是3
,那么你应该打印出hello hello hello
。) - 如果一个恶作剧的用户在询问数字时输入了一个单词,会发生什么?试试看。