Appearance
变量和简单数据类型
1. hello_world.py
创建一个hello_world.py 文件
python
print("Hello World!")运行hello_world.py 文件
在终端中运行hello_world.py 文件
bash
python3 hello_world.py运行文件hello_world.py时,末尾的.py指出这是一个Python程序,因此编辑器将使用Python解释器来运行它。
输出结果为
bash
Hello World!print
[ prɪnt ]
v.打印;印刷;
2. 变量
下面来尝试在hello_world.py中使用一个变量。在这个文件开头添加一行代码,并对第2行代码进行修改,如下所示:
python
message = "Hello World!"
print(message)在终端中运行hello_world.py 文件
输出结果为
bash
Hello World!我们添加了一个名为message的变量。每个变量都存储了一个值——与变量相关联的信息。在这里,存储的值为文本“Hello world!”。
添加变量导致Python解释器需要做更多工作。处理第1行代码时,它将文本“Hello world!”与变量message关联起来;而处理第2行代码时,它将与变量message关联的值打印到屏幕。
下面来进一步扩展这个程序:修改hello_world.py,使其再打印一条消息。为此,在hello_world.py中添加一个空行,再添加下面两行代码:
python
message = "Hello World!"
print(message)
message = "Hello Python Crash Course World!"
print(message)现在如果运行这个程序,将看到两行输出:
bash
Hello World!
Hello Python Crash Course World!在程序中可随时修改变量的值,而Python将始终记录变量的最新值。
2.1. 变量的命名和使用
- 变量名只能包含
字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头
- 变量名只能包含
变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print
- 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好
应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的主意。
2.2. 变量在计算机内存中的表示
当我们写
python
a = 'ABC'时,Python解释器干了两件事情:
- 在内存中创建了一个'ABC'的字符串;
- 在内存中创建了一个名为a的变量,并把它指向'ABC'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:
python
a = 'ABC'
b = a
a = 'XYZ'
print(b) # ABC- 在内存中创建了一个'ABC'的字符串;
- 在内存中创建了一个名为a的变量,并把它指向'ABC'。
- 在内存中创建了一个名为b的变量,并把b指向a指向的字符串'ABC'
- 解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:
- 最后打印变量b的结果自然是'ABC'了
3. 字符串
大多数程序都定义并收集某种数据,然后使用它们来做些有意义的事情。
鉴于此,对数据进行分类大有裨益。我们将介绍的第一种数据类型是字符串。字符串虽然看似简单,但能够以很多不同的方式使用它们。
字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号(注意引号,是英文的),如下所示:
python
"这是一个字符串"
'这也是一个字符串'如果字符串内,既有单引号,又有双引号,怎么办?可以用转义字符\来标识,比如:
python
'I\'m \"OK\"!'表示的字符串内容是: I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以 \\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:
python
print('I\'m \"OK\"!') # I'm "OK"!
print('\\\n\t') # \
print('\t') # 制表符如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,比如:
python
print(r'\\\n\t') # \\\n\t如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容,比如:
python
print('''
Hello
World!
''')输出结果为:
bash
Hello
World!多行字符串'''...'''还可以在前面加上r使用, 结果:
python
print(r'''
Hello \n
World!
''')输出结果为:
bash
Hello \n
World!3.1. 使用方法修改字符串的大小写
对于字符串,可执行的最简单的操作之一是修改其中的单词的大小写。
python
name = "ada lovelace"
print(name.title()) # Ada Lovelace
print(name.lower()) # ada lovelace
print(name.upper()) # ADA LOVELACE
print(name) # ada lovelace在这个示例中,小写的字符串"ada lovelace"存储到了变量name中。在print()语句中,方法title()出现在这个变量的后面。方法是Python可对数据执行的操作。
这里用到的3个方法
- title()以首字母大写的方式显示每个单词
- upper()将字符串转换为全部大写
- lower()将字符串转换为全部小写
lower
[ ˈlɒwər ]
v.降低;减少
upper
[ ˈʌpər ]
v.提高;增加
3.2. 合并(拼接)字符串
在很多情况下,都需要合并字符串。例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:
python
fitst_name = "first"
last_name = "last"
full_name = fitst_name + " " + last_name
print(full_name) # first last3.3. 删除空白
'python'和'python '看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。
Python能够找出字符串开头和末尾多余的空白。要确保字符串首尾没有空白,可使用方法rstrip()。
strip
[ ˈstɪrp ]
v.删除字符串首尾的空白
python
aname = " ada lovelace "
print(aname.strip()) # ada lovelace
print(aname) # ada lovelace
aname = aname.strip()
print(aname) # ada lovelace为删除这个字符串中的空白,你需要将其末尾的空白剔除,再将结果存回到原来的变量中。
在编程中,经常需要修改变量的值,再将新值存回到原来的变量中。这就是变量的值可能随程序的运行或用户输入数据而发生变化的原因。
方法
- strip()删除字符串
首尾的空白 - rstrip()删除字符串
末尾的空白 - lstrip()删除字符串
开头的空白
4. 数字
4.1. 整数
整数就是没有小数部分的数字。例如,1、2、3和-23都是整数。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d4。
4.2. 浮点数
浮点数就是有小数部分的数字。例如,1.23、-0.456和3.14159都是浮点数。
Python将所有带小数点的数字都称为浮点数。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
4.3. 运算符号
在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。
python
print(2 + 3) # 5
print(2 - 3) # -1
print(2 * 3) # 6
print(2 / 3) # 0.6666666666666666Python使用两个乘号表示乘方运算: 例如2的3次方等于8:
python
print(2 ** 3) # 8除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
python
print(4 / 2) # 2.0还有一种除法是//,称为地板除,两个整数的除法仍然是整数:
python
print(5 // 2) # 2因为//除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数
python
print(5 % 2) # 1Python还支持运算次序,因此你可在同一个表达式中使用多种运算。你还可以使用括号来修改运算次序,让Python按你指定的次序执行运算,如下所示:
python
print(2 + 3 * 4) # 14
print((2 + 3) * 4) # 204.4. 使用函数str()避免类型错误
python
age = 23
message = "I am " + str(age) + " years old."
print(message)你可能认为,上述代码会打印一条简单的生日祝福语:Happy 23rd birthday!。但如果你运行这些代码,将发现它们会引发错误:
bash
Traceback (most recent call last):
File "/Users/ly/Documents/code/coolo/blog-new/test/birthday.py", line 2, in <module>
message = "I am " + age + " years old."
~~~~~~~~^~~~~
TypeError: can only concatenate str (not "int") to str这是一个类型错误,意味着Python无法识别你使用的信息。在这个示例中,Python发现你使用了一个值为整数(int)的变量,但它不知道该如何解读这个值。
为解决这个问题,你需要将整数转换为字符串,再将其合并到其他字符串中。
python
age = 23
message = "I am " + str(age) + " years old."
print(message) # I am 23 years old.5. 布尔值
布尔值只有两种可能的情况:True和False。
python
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False布尔值可以用and、or和not运算
python
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> not True
False
>>> not False
True布尔值经常用在条件判断中,比如:
python
age = 23
if age >= 18:
print("You are old enough to vote!")
else:
print("You must be at least 18 to vote.")6. 空值
空值是Python里一个特殊的值,用None表示。 None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
7. 常量
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:
python
PI = 3.14159265359但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法, 如果你一定要改变变量PI的值,也没人能拦住你。
8. 注释
注释都是一项很有用的功能。 注释让你能够使用自然语言在程序中添加说明。
8.1 单行注释
在Python中,注释用井号(#)标识。井号后面的内容都会被Python解释器忽略,如下所示:
python
# 这是一个注释
print("Hello World!") # 这是一条打印语句8.2 多行注释
在Python中,多行注释用三引号('''或""")标识。三引号之间的内容都会被Python解释器忽略,如下所示:
python
'''
这是一个多行注释
可以跨越多行
'''