一、变量
1、在程序中可随时修改变量的值,而Python将始终记录变量的最新值。
创建 hello_world.py,添加下面代码:
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)
如果运行这个程序,将看到两行输出:
Hello Python world!
Hello Python Crash Course world!
2、变量的命名和使用
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为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
二、字符串
在Python中,用引号括起的都是字符串,其中的引号可以是单引号, 也可以是双引号。
1、使用方法修改字符串的大小写
输入:
name = 'ada lovelace'
print(name.title()) #以首字母大写的方式显示每个单词
print(name.upper()) #将单词全部变成大写
print(name.lower()) #将单词全部变成小写
结果:
Ada Lovelace
ADA LOVELACE
ada lovelace
2、合并(拼接)字符串
python使用加号(+)来合并字符串,这种合并字符串的方法称为拼接。
通过拼接,可使用存储在变量中的信息来创建完整的消息。
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print(full_name)
#使用了方法title()来将姓名设置为合适的格式
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")
#使用拼接来创建消息,再把整条消息都存储在一个变量中:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
message = "Hello, " + full_name.title() + "!"
print(message)
输出:
ada lovelace
Hello, Ada Lovelace!
Hello, Ada Lovelace!
3、使用制表符或换行符来添加空白
编程中,空白泛指任何非打印字符,如空格、制表符和换行符。可使用空白来组织输出, 以使其更易读。
print("----------------")
print("Python")
#输出Python
print("----------------")
print("\tPython")
#字符串中添加制表符
print("----------------")
print("Languages:\nPython\nC\nJavaScript")
#字符串中添加换行符
print("----------------")
print("Languages:\n\tPython\n\tC\n\tJavaScript")
#字符串中添加制表符和换行符
输出:
----------------
Python
----------------
Python
----------------
Languages:
Python
C
JavaScript
----------------
Languages:
Python
C
JavaScript
4、删除空白
Python能够找出字符串开头和末尾多余的空白
要确保字符串末尾没有空白,可使用方法 rstrip()
favorite_language = 'python '
print(favorite_language)
#‘python ’
print(favorite_language.rstrip())
#‘python’
print(favorite_language) #表示空格的删除是暂时的
#‘python ’
要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:
favorite_language = 'python '
favorite_language = favorite_language.rstrip()
print(favorite_language)
#'python'
- 删除字符串开头的空白:lstrip()
- 删除字符串结尾的空白:rstrip()
- 删除字符串两端的空白:strip()
favorite_language = ' python '
print(favorite_language.rstrip())
#‘ python’
print(favorite_language.lstrip())
#‘python ’
print(favorite_language.strip())
#‘python’
print(favorite_language)
#‘ python ’
三、数字
1、整型
Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。
a=2020
print(a,type(a))
#2020 <class 'int'>
该函数找到一个整数的二进制表示,再返回其长度。
a = 1031
print(bin(a))
# 0b10000000111
print(a.bit_length())
# 11
2、浮点型
print(0.2+0.1)
#0.30000000000000004
print(3*0.1)
#0.30000000000000004
分析:
所有语言都存在这种问题,没有什么可担心的。Python会尽力找到一种方式,以尽可能精确地表示结果,但鉴于计算机内部表示数字的方式,这在有些情况下很难。就现在而言,暂时忽略多余的小数位数即可
print(1, type(1))
# 1 <class 'int'>
print(1., type(1.))
# 1.0 <class 'float'>
a = 0.00000023
b = 2.3e-7
print(a) # 2.3e-07
print(b) # 2.3e-07
有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。
import decimal
from decimal import Decimal
Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的dir(decimal) 来看其属性和方法。比如 getcontext() 显示了 Decimal 对象的默认精度值是 28 位 (prec=28),展示如下:
a = decimal.getcontext()
print(a)
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
让我们看看 1/3 的保留 28 位长什么样?
b = Decimal(1) / Decimal(3)
print(b)
# 0.3333333333333333333333333333
那保留 4 位呢?用 getcontext().prec 来调整精度。
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333
3、布尔型
布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔变量用在数字运算中,用 1 和 0 代表 True 和 False。
print(True + True)
# 2
print(True + False)
# 1
print(True * False)
# 0
除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是:
- 基本类型:整型、浮点型、布尔型
- 容器类型:字符、元组、列表、字典和集合
print(type(0), bool(0), bool(1))
# <class 'int'> False True
print(type(10.31), bool(0.00), bool(10.31))
# <class 'float'> False True
print(type(True), bool(False), bool(True))
# <class 'bool'> False True
bool 作用在基本类型变量的总结:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。
print(type(''), bool(''), bool('python'))
# <class 'str'> False True
print(type(()), bool(()), bool((10,)))
# <class 'tuple'> False True
print(type([]), bool([]), bool([1, 2]))
# <class 'list'> False True
print(type({}), bool({}), bool({'a': 1, 'b': 2}))
# <class 'dict'> False True
print(type(set()), bool(set()), bool({1, 2}))
# <class 'set'> False True
bool 作用在容器类型变量的总结:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。
确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。
- 对于数值变量,0, 0.0 都可认为是空的。
- 对于容器变量,里面没元素就是空的。
4、使用函数str()避免类型错误
age = 23
message = "Happy " + age + "rd Birthday!"
print(message)
结果:
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
正确做法:调用函数str(),让Python将非字符串值表示为字符串
age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message)
输出:
Happy 23rd Birthday!
5、数据类型与转换
- 获取信息
print(type(1))
# <class 'int'>
print(type(5.2))
# <class 'float'>
print(type(True))
# <class 'bool'>
print(type('5.2'))
# <class 'str'>
- 获取类型信息 isinstance()
print(isinstance(1, int))
# True
print(isinstance(5.2, float))
# True
print(isinstance(True, bool))
# True
print(isinstance('5.2', str))
# True
- 转换为整型 int()
- 转换为字符串 str()
- 转换为浮点型 float()
print(int('520')) # 520
print(int(520.52)) # 520
print(float('520.52')) # 520.52
print(float(520)) # 520.0
print(str(10 + 10)) # 20
print(str(10.1 + 5.2)) # 15.3
四、运算符
1、常用运算符
运算符 | 描述 |
---|---|
// | 取整除 |
** | 幂 |
& | 与 |
I | 或 |
^ | 异或 |
~ | 取反 |
<< | 左移动 |
>> | 右移动 |
and | 布尔类型与 |
or | 布尔类型或 |
not | 布尔类型非 |
is | 判断两个标识符是否引用同一个对象 |
is not | 判断两个标识符是否引用不同对象 |
2、运算符优先级
运算符 | 描述(由上至下对应优先级由高到低) |
---|---|
** | 幂运算 |
~ + - | 取反、正号、负号 |
* / % // | 乘、除、取模、取整除 |
+ - | 加法、减法 |
>> << | 右移、左移 |
& | 与 |
^ I | 异或、或 |
<= < > >= | 比较运算符 |
== != | 是否等于、是否不等于 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |