Python的基本语法和数据类型
一、注释
注释: 就是对代码的解释说明, 方便大家阅读python代码,程序不进行编译运行。在编辑器中快捷键: notepad :ctrl + q pycharm: ctrl + /
1、注释的分类
1.1、单行注释以#号开头 ,右边的所有东西都被当做说明文字 ,比如:
print('hello world') # 注意,print 是一个函数。
1.2、多行注释: 三个单引号 或 三个双引号
'''
这是第一行
这是第二行
'''
注释嵌套的时候注意点:如果外面使用三个单引号,外面使用三个双引号,反之亦然.
"""
print("2020年鼠年,瘟疫席卷全国")
print("向奋战在一线的医务人员致敬")
'''
print("远离野生动物")
'''
print("戒杀放生")
print("远离灾祸")
"""
3、注释的排错功能:
先找到错误的代码,整体用注释进行包裹查看是否报错,然后露出一部分代码执行,如果没有问题,在继续露出另外一部分代码,从而一级一级找到最终的错误在程序中要使用尽可能多的有用注释,注释的作用如下:
a、解释假设(或者前提 / 条件)
b、解释重要的决定
c、解释重要的细节
d、解释你想要解决的问题
e、解释你在程序中试图克服的问题,等等。
二、文字常量
常量就是不可改变的量,python当中没有明确定义常量的关键字,所以约定俗成把变量名大写就是常量,表示不可改变。例如圆周率π = 3.1415926....
一个文字常量的例子是一个数字,如, 5、1.23;或者是一个字符串,如, 'This is a string' 或 "It's a string!"。
它被称为文字,是因为它是 文字的 —— 你使用的是它的字面上的值。 数字 2 就是代表它自己,而不代表其它 —— 它是一个 常量,因为它的值不能改变。因此,所有这些都被称为文字常量。
三、python六大标准数据类型
3.1、数据类型分类:
(1)Number 数字类型 (int float bool complex)
(2)str 字符串类型:(字符串是 字符 的 序列 。字符串本质上就是一堆单词。分:单引号,双引号,三引号三种类型
(3)list 列表类型
(4)tuple 元组类型
(5)set 集合类型
(6)dict 字典类型
3.2、Number数字类型分类:
int : 整数类型 ( 正整数 0 负整数 )
float: 浮点数类型 ( 浮点数(floating point numbers,或者简称为 floats )1普通小数,如: 3.23 , 2科学计数法表示的小数 例:a = 52.3E-4。 其中, E 表示 10 的幂。在这种情况下, 52.3E-4 就等于 52.3 * 10^-4。 )
bool: 布尔值类型 ( 真True 和 假False )
complex: 复数类型 ( 声明复数的2种方法 ) (复数用作于科学计算中,表示高精度的数据,科学家会使用)
3.3、容器类型分类:五个
str "nihao":特点:可以获取,不可改变的
list [1,2,3]:特点:
tuple (6,7,8)
set {'a',1,2}
dict {'a':1,'b':2}
3.1.2.字符串的详解
在 Python 程序中,字符串基本上是无处不在,所以一定要注意下面的内容。
3.1.2.1、单引号
你可以用单引号指定字符串,如 'Quote me on this'。所有的空格,即引号内的空格和制表符,均保持原样。
3.1.2.2、双引号
双引号中的字符串与单引号中的字符串完全相同。如, "What's your name?"。
3.1.2.3、三引号
你可以使用三引号 ——(""" 或 ''')指定多行字符串。你可以在三引号中自由地使用单引号和双引号。例如:
'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''
四、format 方法
有时候我们可能想从其它信息中构造字符串。这就是 format()
方法可以发挥作用的地方。
将下面几行内容保存为 str_format.py
文件:
age = 20
name = '刘先生'
print('我的名字是{0},我今年{1}岁。'.format(name, age)) # 对字符串的转换,通过 format
方法可以自动完成
输出
我的名字是刘先生,我今年20岁
print(name + ' is ' + str(age) + ' years old') # 使用字符串连接实现相同的效果
看一下我们第一次使用 {0} 的地方,它对应于变量 name ,这是 format 方法的第一个参数。类似地,第二个规范是 {1} ,对应于 age ,这是 format 方法的第二个参数。注意, Python 从 0 开始计数,这就意味着第一个位置的索引号是 0 ,第二个位置的索引号是 1 ,依次类推。
Python 在 format
方法中的作用就是将每一个参数值替换为规范的位置。
# 取十进制小数点后的精度为 3 ,得到的浮点数为 '0.333' print('{0:.3f}'.format(1.0/3)) # 填充下划线 (_) ,文本居中 # 将 '___hello___' 的宽度扩充为 11 print('{0:_^11}'.format('hello')) # 用基于关键字的方法打印显示 'Swaroop wrote A Byte of Python' print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))
输出:
0.333
___hello___
刘先生 wrote A Byte of Python
五、print()说明
在使用print()时注意 print
总是以一个不可见的 「新的一行」 字符(\n
)作为结尾,因此对 print
的重复调用将在每个单独的行上打印输出。为了防止这个换行符被打印输出,我们使用 print( end=' ')
print('a', end='') print('b', end='')
输出
ab
或者你可以用空格作为结尾
print('a', end=' ') print('b', end=' ') print('c')
输出:
a b c
六、转义字符
假如,你想要一个含有一个单引号(')的字符串,那该怎么办?例如,字符串是 "What's your name?"。你不能直接用 'What's your name?' 因为 Python 会混淆字符串的起始和结尾位置。因此,你必须指定这个单引号不是代表字符串的结尾。这可以通过所谓的 转义序列 来实现。你可以将单引号指定为 \' :注意是反斜杠。
方法一:
print('What\'s your name?') # 使用反斜杠\
方法二:
print( "What's your name?" ) # 使用双引号
方法三:
print( 'What\'s "your" name?' ) # 使用单引号
输出结果都是:
What's your name?
使用转移序列 \\ 表示反斜杠本身。
如果你想要指定两行字符串呢?一种方法是使用 前面 所示的三引号字符串,或者你可以对换行符 \n 使用转义序列来表示开始新的一行。比如:
print('This is the first line\nThis is the second line')
输出:
This is the first line
This is the second line
制表符: \t 。
print('\tThis is the first line\nThis is the second line')
输出:
This is the first line
This is the second line
需要注意的一点是,在字符串中,行末尾的单个反斜杠表示字符串在下一行中继续,但不添加换行符。例如:
print("This is the first sentence.\ This is the second sentence.")
输出:
This is the first sentence. This is the second sentence.
原始字符串
如果你需要指定一些没有特殊处理(转义序列等)的字符串,那么你需要指定一个 原始 字符串,指定方法是在字符串前面加上 r 或者 R 。例如:
print(r"D:/pycharm/oldboy/hello_world.py")
输出:
D:/pycharm/oldboy/hello_world.py
正则表达式的用户请注意
在处理正则表达式时,我们一般使用原始字符串。否则,可能需要进行大量的反向操作。例如,可以用 '\\1' 或 r'\1' 进行反向引用。
八、变量
仅仅使用文字常量的话,很快就会变得枯燥乏味 —— 我们需要某种方法来存储和操作任何信息。这就是 变量 出现的原因。变量,正如这个名字所暗示的 —— 它们的值可以变化,即,你可以使用变量存储任何内容。变量只是存储信息的计算机内存当中的一部分。和文字常量不同的是,你需要一些方法来访问这些变量,因此你需要为它们命名。
变量:可以改变的量 , 实际指代的上内存中的一段空间
# (1) 变量的概念
rujia_305 = "王文"
rujia_305 = "李四"
print(rujia_305)
# (2) 变量的声明
# (1) 单个变量的定义
a = 1
b = 2
print(a)
print(b)
# (2) 多个变量的定义
a,b = 3,4
print(a , b)
# (3) 相同变量定义
a = b = 5
print( a , b )
# (3)变量的命名
"""
变量的命名
字母数字下划线,首字符不能为数字
严格区分大小写,且不能使用关键字
变量命名有意义,且不能使用中文哦
"""
_abc123 = 3
abc = 10
ABC = 20
print(abc)
# 查看系统所有的关键字
# 引入 模块
import keyword
# res => result
res = keyword.kwlist
print(res)
"""
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally',
'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while',
'with', 'yield']
"""
# 变量名字要有意义
my_car = "宝马"
abc = "宝马"
"""
在python中,用中文命名变量没有语法错误,但是严禁使用
utf-8 国际标准字符编码(万国码) 一个中文占用3个字节,数字或者符号占用一个字节
gbk 国标编码 一个中文占用2个字节,数字,字母,符号占用一个字节
(1) 防止乱码
(2) 占用的空间更小
"""
中文 = "兔子各个"
print(中文)
word = "兔子各个"
# (4) 变量的交换
a = 10
b = 15
# 通用写法
tmp = a
a = b
b = tmp
print(a , b)
# python特有写法
a = 20
b = 30
a,b = b,a
print(a,b)
九、逻辑行和物理行
物理行是当你写程序的时候,你眼睛 看到 的行。逻辑行是 Python 看到 的一个程序语句。Python 默认每一个 物理行 对应一个 逻辑行 。一个逻辑行的一个例子就是一个语句,如 print 'hello world' —— 如果这是单独一行(正如你在编辑器中看到的那样),那么这也对应于一个物理行。默认情况下,Python 推荐一行一个语句,这会使代码更具有可读性。如果你希望在单个物理行中编写更多的逻辑行,则必须使用分号 (;) 显式地指定此逻辑行 / 此语句的结尾。例如:
i = 5 print(i) 等价于: i = 5; print(i); 等价于 i = 5; print(i);
输出结果都是:
5
注意:建议使用一行最多一个语句 ,不要使用分号。
十、缩进
空格在 Python 中非常重要。实际上, 行首的空格非常重要 。这就是所谓的 缩进 。逻辑行开头的前导空格(空格和制表符)用于确定逻辑行的缩进级别,然后用于确定语句的分组。
这就意味着同一组的语句 必须 有相同的缩进。每一个这样的语句集被称为 语句块 。我们将在后面章节中的例子中看到语句块有多么重要。
需要牢记的一件事情是,错误的缩进会导致报错。例如:
i = 5
# 错误如下!注意,在行的开头处有一个空格
print('Value is', i)
print('I repeat, the value is', i)
输出
File "whitespace.py", line 3
print('Value is', i)
^
IndentationError: unexpected indent
注意,第二行的开头处有一个空格。 Python 指示的错误告诉我们,程序的语法无效,即程序没有按照正确的语法规则编写。对你来讲,这意味着 你不能随意开始一个新的语句块 (当然,你一直使用的默认主语句块除外)。可以使用新语句块情况,我们将会在后面的章节中详细介绍。例如, 控制流。
如何缩进?使用四个空格进行缩进。这是 Python 语言的官方建议。优秀的编辑器会自动为你完成缩进操作。要确保你缩进时使用的空格数量一致,否则,程序将无法运行或出现意外的情况。