Python基础——1.变量和简单数据类型

1.0 前言

在本章节中,我们将会学习在python程序中所使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量。

1.1 运行hello.py

即便是运行简单的程序,Python所做的工作也相当多
hello.py

print("Hello World!")

运行上述代码时,你将看到如下输出:

Hello World!

运行文件hello.py时,末尾的.py指出这是一个Python程序,因此编辑器将使用Python解释器来运行它。Python解释器读取整个程序,确定其中每个单词的含义。例如,看到单词print 时,解释器就会将括号中的内容打印到屏幕,而不会管括号中的内容是什么。

编写程序时,编辑器会以各种方式突出程序的不同部分。例如,它知道print 是一个函数的名称,因此将其显示为蓝色;它知道“Hello World!”不是Python代码,因此将其显示为橙色。这种功能称为语法突出 ,在你刚开始编写程序时很有帮助。

1.2 变量

下面来尝试在hello.py中使用一个变量。在这个文件开头添加一行代码,并对第2行代码进行修改,如下所示:

message = "Hello World"
print(message)

试着运行这个程序,看看结果如何。你会发现,输出的结果将与以前相同:

Hello World!

我们添加了一个名为message的变量。每个变量都存储了一个值——与变量相关联的信息。在这里,存储的值为文本“Hello World!”。
添加变量导致Python解释器需要做更多工作。处理第1行代码时,它将文本“Hello World!”与变量message 关联起来;而处理第2行代码时,它将与变量message 关联的值打
印到屏幕。

下面来进一步扩展这个程序:修改hello_world.py,使其再打印一条消息。为此,在hello_world.py中添加一个空行,再添加下面两行代码:

message = "Hello World!"
print(message)
message = "Hello Python!"
print(message)

现在如果运行这个程序,将看到两行输出:

Hello World!
Hello Python!

这意味着在程序中可以随时修改变量的值,而Python将始终记录变量的最新值。

1.2.1 变量的命名和使用

在Python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下述有关变量的规则:

●变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message。

●变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

●不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。

●变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。

●慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。

1.2.2 使用变量时避免命名错误

下面来看一种你可能会犯的错误,并学习如何消除它。请输入下面的代码,包括其中以粗体显示但拼写不正确的单词mesage:

message = "Hello Traceback!"
print(mesage)

程序存在错误时,Python解释器将竭尽所能地帮助你找出问题所在。程序无法成功地运行时,解释器会提供一个traceback。traceback是一条记录,指出了解释器尝试运行代码时, 在什么地方陷入了困境。下面是你不小心错误地拼写了变量名时,Python解释器提供的traceback:

  Traceback (most recent call last): 
①     File "hello.py", line 2, in <module> 
②         print(mesage) 
③ NameError: name 'mesage' is not defined

解释器指出,文件hello.py的第2行存在错误(见❶);
它列出了这行代码,旨在帮助你快速找出错误(见❷);
它还指出了它发现的是什么样的错误(见❸)。

在❸这里,解释器发现了一个名称错误,并指出打印的变量mesage未定义:Python无法识别你提供的变量名。名称错误通常意味着两种情况:要么是使用变量前忘记了给它赋值,要么是输入变量名时拼写不正确。

在这个示例中,第2行的变量名message中遗漏了字母s。Python解释器不会对代码做拼写检查,但要求变量名的拼写一致。例如,如果在代码的另一个地方也将message错误地拼 写成了mesage,结果将如何呢?

mesage = "Hello Traceback!"
print(mesage)

在这种情况下,程序将成功地运行:

Hello Traceback!

计算机一丝不苟,但不关心是否拼写正确。因此,在创建变量名和编写代码时,你无需考虑英语中的拼写和语法规则。

很多编程错误都很简单,只是在程序的某一行输错了一个字符,但为找出这种错误而花费很长时间的大有人在。

1.3 字符串

大多数程序都定义并收集某种数据,然后使用它们来做些有意义的事情。鉴于此,对数据进行分类大有裨益。我们将介绍的第一种数据类型是字符串。字符串虽然看似简单,但却有很多不同的方式来使用它们。

字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:

"This is a string."
'This is also a string.'

这种灵活性让你能够在字符串中包含引号和撇号:

'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."

下面来看一些使用字符串的方式。

1.3.1 使用方法修改字符串的大小写

对于字符串,可执行的最简单的操作之一是修改其中的单词的大小写。请看下面的代码,并尝试判断其作用:
name.py

name = "ada lovelace"
print(name.title())

将这个文件保存为name.py,再运行它。你将看到如下输出:

Ada Lovelace

在这个示例中,小写的字符串"ada lovelace" 存储到了变量name 中。在print() 语句中,方法title() 出现在这个变量的后面。方法 是Python可对数据执行的操作。

在name.title() 中,name 后面的句点(. )让Python对变量name 执行方法title() 指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成其工作。

这种信息是在括号内提供的。函数title() 不需要额外的信息,因此它后面的括号是空的。

title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。这很有用,因为你经常需要将名字视为信息。例如,你可能希望程序将值Ada 、ADA 和ada 视为同一个名字,并将它们都显示为Ada。

还有其他几个很有用的大小写处理方法。例如,要将字符串改为全部大写或全部小写,可以像下面这样做:

name = "Ada Lovelace"
print(name.upper())
print(name.lower())

这些代码的输出如下:

ADA LOVELACE
ada lovelace

存储数据时,方法lower() 很有用。很多时候,你无法依靠用户来提供正确的大小写,因此需要将字符串先转换为小写,再存储它们。以后需要显示这些信息时,再将其转换为
最合适的大小写方式。

1.3.2 字符串拼接

在很多情况下,都需要合并字符串。例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:

first_name = "ada"
last_name = "loveface"
full_name = first_name + " " + last_name
print(full_name)

Python使用加号(+ )来合并字符串。在这个示例中,我们使用+ 来合并first_name 、空格和last_name ,以得到完整的姓名,其结果如下:

ada lovelace

这种合并字符串的方法称为拼接。通过拼接,可使用存储在变量中的信息来创建完整的消息。下面来看一个例子:

first_name = "ada"
last_name = "loveface"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")

在这里,一个问候用户的句子中使用了全名,并使用了方法title()为姓名设置合适的格式。
这些代码显示一条格式良好的简单问候语:

Hello, Ada Lovelace!

你也可以使用拼接来创建消息,再把整条消息都存储在一个变量中:

first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name # ①
message = "Hello, " + full_name.title() + "!" # ②
print(message)

上述代码也显示消息“Hello, Ada Lovelace!”但将这条消息存储在了一个变量中(见❶),这让最后的print语句简单得多(见❷)。
值得一提的是,在第三和第四行语句中出现了符号‘①’和‘②’,在Python中这是显然不合乎常理的,之所以不报错的原因是因为使用了注释符“#”,在其之后的内容将不会被执行。

1.3.3 访问字符串中的值

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。

Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:

变量[头下标:尾下标]

索引值以0为开始值,-1为从末尾的开始位置。以下是一些字符串访问的实例:

s = Hello!
str[0] = 'H'    str[:] = 'Hello!'
str[1] = 'e'    str[0:] = 'Hello!'
str[2] = 'l'    str[:6] = 'Hello!'
str[3] = 'l'    str[:2] = 'He'
str[4] = 'o'    str[0:3] = 'Hel'
str[5] = '!'    str[1:4] = 'ell'
1.3.4 Python 字符串更新

在Python中,你可以截取字符串的一部分并与其他字段拼接,如下实例:

var1 = 'Hello World!'
print ("old string:",var1)
print ("new string:",var1[:6] + 'Python!')

这些代码的输出如下:

old string:Hello World!
new string:Hello Python!

1.4 数字

在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。

1.4.1 整数

在python中,可对整数执行加(+)减(-)乘(*)除(/)运算,如:

a = 2
b = 3
print(a+b,a-b,a*b,b/a,a**b)

在这个程序中,Python会输出运算结果。**表示乘方运算,输出结果是:

5 -1 6 1.5 8

Python也支持运算次序,因此你可在同一个表达式中使用多种运算。你还可以使用括号来修改运算次序,让Python按你指定的次序执行运算,如下所示:

a = 2
b = 3
print("num1:",a+b*a)
print("num2:",(a + b) * a)

输出结果是:

8
10

空格不会影响Python计算表达式的方式,它们的存在旨在让你阅读代码时,能迅速确定先执行哪些运算。

1.4.2 浮点数

Python将带小数点的数字都称为浮点数 。大多数编程语言都使用了这个术语,它指出了这样一个事实:小数点可出现在数字的任何位置。

每种编程语言都须细心设计,以妥善地处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。

从很大程度上说,使用浮点数时都无需考虑其行为。你只需输入要使用的数字,Python通常都会按你期望的方式处理它们,下面在Python的交互式平台idle中输入以下表达式:

0.1 + 0.1
0.2 + 0.2
2 * 0.1
2 * 0.2

得到的结果会是:

0.2
0.4
0.2
0.4
1.4.3 使用函数str() 避免类型错误

你经常需要在消息中使用变量的值。例如,假设你要祝人生日快乐,可能会编写类似于下面的代码:

age = 20
message = "Happy " + age + "rd Birthday!"
print(message)

你可能认为,上述代码会打印一条简单的生日祝福语:Happy 20rd birthday!。但如果你运行这些代码,将发现它们会引发错误:

Traceback (most recent call last):
    File "birthday.py", line 2, in <module>
        message = "Happy " + age + "rd Birthday!"
TypeError: Can't convert 'int' object to str implicitly

这是一个类型错误 ,意味着Python无法识别你使用的信息。在这个示例中,Python发现你使用了一个值为整数(int )的变量,但它不知道该如何解读这个值。Python知
道,这个变量表示的可能是数值20,也可能是字符2和0。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str() ,
它让Python将非字符串值表示为字符串:

age = 20
message = "Happy " + str(age) + "rd Birthday!"
print(message)

这样,Python就知道你要将数值23转换为字符串,进而在生日祝福消息中显示字符2和3。经过上述处理后,将显示你期望的消息,而不会引发错误:

Happy 20rd Birthday!

大多数情况下,在Python中使用数字都非常简单。如果结果出乎意料,请检查Python是否按你期望的方式将数字解读为了数值或字符串。

1.5 注释

在大多数编程语言中,注释都是一项很有用的功能。本书前面编写的程序中都只包含Python代码,但随着程序越来越大、越来越复杂,就应在其中添加说明,对你解决问题的方法
进行大致的阐述。注释 让你能够使用自然语言在程序中添加说明。

1.5.1 如何编写注释

在Python中,注释用井号(# )标识。井号后面的内容都会被Python解释器忽略,如下所示:

# 向大家问好
print("Hello Python people!")

Python解释器将忽略第1行,只执行第2行。

Hello Python people!
1.5.2 该编写什么样的注释

编写注释的主要目的是阐述代码要做什么,以及是如何做的。

在开发项目期间,你对各个部分如何协同工作了如指掌,但过段时间后,有些细节你可能不记得了。当然,你总是可以通过研究代码来确定各个部分的工作原理,但通过编写注释,以清晰的自然语言对解决方案进行概述,可节省很多时间。

要成为专业程序员或与其他程序员合作,就必须编写有意义的注释。当前,大多数软件都是合作编写的,编写者可能是同一家公司的多名员工,也可能是众多致力于同一个开源项目的人员。

训练有素的程序员都希望代码中包含注释,因此你最好从现在开始就在程序中添加描述性注释。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的注释。

如果不确定是否要编写注释,就问问自己,找到合理的解决方案前,是否考虑了多个解决方案。如果答案是肯定的,就编写注释对你的解决方案进行说明吧。

相比回过头去再添加注释,删除多余的注释要容易得多。从现在开始,接下来以后的示例都将使用注释来阐述代码的工作原理。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值