Python3基础语法

1.Python标识符

  • 组成:数字,字母,下划线
  • 所有标识符可以包括英文,数字以及下划线,但是不能以数字开头
  • 区分大小写
  • 以下划线开头的标识符是具有特殊意义的,如以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import*而导入
  • 以双下划线开头的__foo代表类的私有成员,以双下划线开头和结尾的__foo__代表Python里特殊方法专用的标识,如__init__()代表类的构造函数
  • python可以同一行显示多条语句,方法是用分号分开

2.python关键字

andexec
notassert
finallyor
breakfor
passclass
fromprint
continueglobal
raisedef
ifreturn
delimport
tryelif
inwhile
elseis
withexcept
lambdayield

3.行、缩进、引号、注释、空行

3.1缩进规则

  • python里面不用{}控制类,函数,以及其他逻辑判断
  • 缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量

3.2多行语句

# 多行语句:用反斜杠来连接
item_one = 0
item_two = 2
item_three = 3
total = item_one + \
    item_two + \
    item_three
print(total)    # 5

注意点:

  • 如果包含[],{},()括号就不需要用多行连接符,如下述例子
# 在[],{},()中的多行语句,不需要使用反斜杠(\)
total = ['item_one', 'item_two', 'item_three']
print(total)     # ['item_one', 'item_two', 'item_three']

3.3引号

可以使用单引号,双引号,三引号来表示字符串,引号的开始和结束必须是相同类型的,其中三引号可以有多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释

3.4注释

  • 单行注释用#开头
  • 多行注释请看下述例子
'''
这是多行注释
'''

3.5python空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始,类和函数入口之间也用一行空行分隔,以突出函数入口的开始
注意点:
空行不是python语法的一部分,书写时不插入空行,python解释器也不会运行出错,但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构

4.输入、输出

4.1输入

n = input()

4.2输出


x = "a"
y = "b"
# 换行输出
print(x)
print(y)
print("---------")
# 不换行输出
print(x),
print(y),
print(x, y)

在这里插入图片描述

5.多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之为代码组,像if,while,def和class这样的复合语句,首行以关键字开始,以冒号结束,该行之后的一行或多行代码构成代码组

score = 80
if score >= 90:
    print('A')
elif score >= 80:
    print('B')
elif score >= 70:
    print('C')
elif score >= 60:
    print('D')
else:
    print('E')

6.python基本数据类型

6.1.单变量赋值

python中的变量不需要生命,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建

a = 100  # 整型变量
b = 100.0  # 浮点型变量
c = 'abc'  # 字符串

6.2.多变量赋值

# 以下实例,创建一个整型对象,值为1,从后向前赋值,三个变量被赋予相同的数值
a = b = c = 1
# 以下实例,两个整型对象1和2的分配给变量a和b,字符串对象‘abc’分配给变量c
a, b, c = 1, 2, 'abc'
print(a, b, c)  # 1 2 abc

6.3.标准数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictonary(字典)

注意点:
(1)不可变数据(三个):Number(数字),String(字符串),Tuple(元组)
(2)可变数据(3个):List(列表),Dictionary(字典),Set(集合)

6.3.1.Number(数字)

注意点:
数据类型是不允许改变的,如果改变数字数据类型的值,将重新分配内存空间
(1)支持四种类型:

  • int:表示为长整型,没有long
  • float
  • bool
  • complex(复数):a+bj复数的实部a和虚部b都是浮点型

(2)注意点:

  • python2中没有布尔型,0表示false,1表示true
  • python3中,True和False是关键字,但他们的值仍是0个1,可以进行数字相加

(3)用一个函数可以用来查看变量所指的对象类型,用isinstance也可以判断,例如:

a, b, c = 1, 2, 'abc'
print(a, b, c)  # 1 2 abc
# 查看变量所指的对象类型
print(type(a))   # <class 'int'>
print(type(b))   # <class 'int'>
print(type(c))   # <class 'str'>

print(isinstance(a, int))  # True

注意点:isinstance和type的区别在于

  • type()不会认为子类是一种父类类型
  • isinstance()会认为子类是一种父类类型

(4)可以使用del语句删除一些对象引用,例如:

del a
del b,c

(5)数值运算

print(1 + 1)  # 加法 2
print(1.1 - 1)  # 减法 0.10000000000000009
print(2 * 3)   # 乘法 6
print(2 / 4)  # 除法 0.5
print(2 // 4)  # 除法:得到一个整数 0
print(7 // 2.0) # 3.0
print(7.0 // 2) # 3.0
print(10 % 3)  # 取余 1
print(2 ** 3)  # 乘方 8

注意点:

  • /返回一个浮点数,//返回一个整数(直接舍弃其后的小数)
  • 在混合运算时,python会把整型转换成为浮点数
  • *表示乘法,**表示乘方

(6)数据类型转换

  • int(x):将x转换为一个整数
  • float(x):将x转换得到一个浮点数
  • complex(x):将x转换得到一个复数,实数部分为x,虚数部分为0
  • complex(x,y):将x和y转换得到一个复数,实数部分为x,虚数部分为y,x和y是数学表达式
a = 1.5
print(int(a))  # 1
a = 1
print(float(a))  # 1.0  
print(complex(a))  # (1 + 0j)
print(complex(a,1))  # (1 + 1j)

(7)数学函数

函数返回值(描述)
abs(x)返回数字的绝对值
ceil(x)向上取整
cmp(x,y)如果x<y,返回-1,如果x==y返回0,否则,返回1,python3已废弃,使用(x>y) - (x<y)替换
exp(x)返回x次幂,math.exp(1)返回2.718281828459045
fabs(x)返回数字的绝对值,math.fabs(-10),返回10
floor(x)向下取整,math.floor(4.9)返回4
log(x)math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,math.log10(100)返回2.0
max(x1,x2…)返回给定参数的最大值,参数可以为序列
min(x1,x2…)返回给定参数的最小值,参数可以为序列
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x,y)x**运算后的值
round(x,[n])返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
sqrt(x)返回数字x的平方根
import math
a = -1.9
b = 2
c = -3
d = -1.9
list = [-1.9, 2, -3, -1.9]
print(abs(a))  # 1.9
print(math.ceil(a))  # -1
print((a > b) - (a < b))  # -1
print((a > c) - (a < c))  # 1
print((a > d) - (a < d))  # 0
print(math.exp(1))    # 2.718281828459045
print(math.fabs(a))   # 1.9
print(math.floor(a))  # -2
print(math.log(math.e))  # 1.0
print(math.log(100, 10))  # 2.0
print(math.log10(100))  # 2.0
print(max(a, b, c, d))  # 2
print(max(list))  # 2
print(min(a, b, c, d))  # -3
print(min(list))  # -3
print(math.modf(a))  # (-0.8999999999999999, -1.0)
print(math.pow(2, 3))  # 8.0
print(round(a))  # -2
print(math.sqrt(16))  # 4.0

(8)随机数函数

函数描述
choice(range(10))从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数
randrange([start,]stop[,step]从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为1
random()随机生成下一个实数,它在[0,1)范围内
seed([x])改变随机数生成器的种子
shuffle(list)将序列的所有元素随机排序
uniform(x,y)随机生成下一个实数,它在[x,y]范围内
import random
print(random.choice(range(100)))  # 66
list = [-1.9, 2, -3, -1.9]
random.shuffle(list)
print(list)  # [2, -1.9, -3, -1.9]
print(random.uniform(10, 20))  # 13.003644396627625
6.3.2.String(字符串)

(1)截取字符串
在这里插入图片描述

  • 加号+是字符串的连接符
  • 星号*表示复制当前字符串,与之结合的数字为复制的次数
str = 'helloworld'
print(str)  # 输出字符串 helloworld
print(str[0: -1])  # 输出第一个到倒数第二个的所有字符 helloworl
print(str[0])  # 输出字符串第一个字符 h
print(str[2: 5])  # 输出从第三个字符到第五个的字符 llo
print(str[2:])  # 输出从第三个开始的后的所有字符 lloworld
print(str * 2)  # 输出字符串两次 helloworldhelloworld
print(str + "test")  # 连接字符串helloworldtest

(2)转义
如果你不想让反斜杠发生转移,可以在字符串前面添加一个r,表示原始字符串,例如

print('hello\nworld')
print(r'hello\nworld')

输出结果:
在这里插入图片描述

(3)理解python字符串之不可变
向一个索引赋值,比如word[0] = 'm'会导致错误,若实在想更新字符串,则可以借助截取和+两种操作结合,例如:

str = "hello world!"
print(str[0:6] + "lyh")  # hello lyh

(4)python字符串运算符

+字符串拼接
*重复输出字符串
[]通过索引获取字符串中字符
[:]截取字符串中的一部分,左闭右开原则
in成员运算符,如果字符串中包含给定的字符返回True
not in成员运算符,如果字符串中不包含给定的字符返回False
r/R原始字符串-原始字符串
%格式字符串

(5)字符串格式化

print("我叫%s今年%d岁!" % ('lyh', 21))  # 我叫lyh今年21岁!
符号描述
%c格式化字符及其ASCII码
%d格式化字符串
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
% f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e
% g%f和%e的简写
%G%f和%E的简写
%p用十六进制数格式化变量的地址
6.3.3.List(列表)
  • 列表中的元素类型可以不相同
  • 字符串甚至可以包含列表(嵌套)
  • 列表是写在方括号[]之间,用逗号分隔开的元素列表
  • 可以被索引,截取和拼接
  • 列表元素可变
  • List写在方括号之间,元素之间用逗号隔开
  • 可以使用+操作符进行拼接
list = ['abcd', 777, 3.2, 'rt', 90]
list2 = [90]
print(list)  # ['abcd', 777, 3.2, 'rt', 90]
print(list[0])  # abcd
print(list[1: 3])  # [777, 3.2]
print(list * 2)  # ['abcd', 777, 3.2, 'rt', 90, 'abcd', 777, 3.2, 'rt', 90]
print(list + list2)  # ['abcd', 777, 3.2, 'rt', 90, 90]
def reverseWords(input):
    # 通过空格将字符串分隔符,把各个单词分隔为列表
    inputWords = input.split(" ")

    # 翻转字符串
    # 假设列表 list = [1,2,3,4],  
    # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
    # inputWords[-1::-1] 有三个参数
    # 第一个参数 -1 表示最后一个元素
    # 第二个参数为空,表示移动到列表末尾
    # 第三个参数为步长,-1 表示逆向
    inputWords = inputWords[-1::-1]

    # 重新组合字符串
    output = ' '.join(inputWords)

    return output


if __name__ == "__main__":
    input = 'I like runoob'
    rw = reverseWords(input)
    print(rw)
6.3.4.Tuple(元组)
  • 与列表类似
  • 元素不能更改
  • 也可以截取
  • 元素写在小括号()里,元素之间用逗号隔开
  • 字符串可以看为特殊的元组
  • 元组也可以被索引和切片,方法一样
  • 元组也可以使用+操作符进行拼接
tuple = ('abcd', 777, 3.2, 'rt', 90)
tuple2 = (90, 2)
print(tuple)  # ('abcd', 777, 3.2, 'rt', 90)
print(tuple[0])  # abcd
print(tuple[1: 3])  # (777, 3.2)
print(tuple * 2)  # ('abcd', 777, 3.2, 'rt', 90, 'abcd', 777, 3.2, 'rt', 90)
print(tuple + tuple2)  # ('abcd', 777, 3.2, 'rt', 90, 90)

注意点:

  • 虽然tuple的元素不可变,但它可以包含可变的对象,比如list列表
  • 构造包含0个或1个元素的元组比较特殊,所以有一些额外的语法规则
tuple1 = ()   # 空元组
tuple2 = (1,) # 一个元素,需要在元素后添加逗号
  • string,list和tuple都属于sequence(序列)
6.3.5.Set集合
  • 不包含重复元素
  • 创建一个空Set用()
  • 无序的
# 第一种创建方法
arr = {12, 12, 34, 'ab', 'ab', 'ac'}
print(arr)  # 输出集合,重复的元素被自动去掉 {34, 12, 'ac', 'ab'}
# 第二种创建方法
a = set('11222345')
print(a)  # {'2', '3', '5', '1', '4'}
  • set的集合运算
# set的集合运算
print(a)  # {'2', '3', '5', '1', '4'}
print(b)  # {'7', '4', '5', '2'}
print(a - b)  # a和b的差集 {'3', '1'}
print(a | b)  # a和b的并集 {'7', '4', '1', '5', '2', '3'}
print(a & b)  # a和b的交集 {'4', '5', '2'}
print(a ^ b)  # a和b中不同时存在的元素 {'7', '1', '3'}
6.3.6.Dictionary(字典)
  • 是python中另一个非常有用的内置数据类型
  • 列表是有序的对象集合,字典是无序的对象集合
  • 字典当中的元素是通过键来存取的,而不是通过偏移存取
  • 是一种映射类型,字典用{}标识,它是一个无序的键(key):值(value)的集合
  • 键(key)必须使用不可变类型
  • 在同一个字典中,键(key)必须是唯一的
  • 字典是一种映射类型,它的元素是键值对
  • 字典的关键字必须为不可变类型,且不能重复
  • 创建空字典使用{}
user = {
    'name': 'Tom',
    'age': 18,
    'sex': 'male'
}
print(user)    # {'name': 'Tom', 'age': 18, 'sex': 'male'}
print(user['age'])  # 18

user['age'] = 28
print(user)  # {'name': 'Tom', 'age': 28, 'sex': 'male'}

# 可以通过赋值的方式给字典里面添加元素
user['fav'] = '打篮球'
print(user)   # {'name': 'Tom', 'age': 28, 'sex': 'male', 'fav': '打篮球'}

dict = {}
dict['one'] = "lyh"
dict[2] = "liyuhuan"

tinydict = {'name': 'liyuhuan', 'sex':'女', 'age': 21}

print(dict['one'])       # 输出键为 'one' 的值  lyh
print(dict[2])           # 输出键为 2 的值   liyuhuan
print(tinydict)          # 输出完整的字典   {'name': 'liyuhuan', 'sex': '女', 'age': 21}
print(tinydict.keys())   # 输出所有键   dict_keys(['name', 'sex', 'age'])
print(tinydict.values())  # 输出所有值   dict_values(['liyuhuan', '女', 21])
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值