Python学习笔记1

基本语法介绍

注释

  1. 单行注释:以# 开头,注释一整行,例如:

    # 单行注释
    print("hahaha")
    
  2. 多行注释:三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来。

    '''
    多
    行
    '''
    """
    注
    释
    """
    

变量命名规则

  • 只能由数字、字母和下划线组成,不能以数字开头。
  • 不能使用系统关键字作为变量名。
  • 变量名区分大小写

查看系统关键字

from keyword import kwlist
print(kwlist)

标准数据类型

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

Number(数字):包括int(整型)、float(浮点型、bool(布尔型)、complex(复数)。

​ 注:bool型中True=>1,False=>0。

String(字符串):用单引号’或双引号”括起来。

List(列表):写在方括号 [] 之间、元素之间用逗号分隔开。

Tuple(元组):写在小括号 () 之间、元素之间用逗号分隔开。

Set(集合):可以使用大括号 { } 或者 set() 函数创建集合。

Dictionary(字典):一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

——type():用于查看数据的数据类型

输入函数 input()

name = input("输入姓名")   #函数返回值是一个字符串

输出函数 print()

print("hello world!")

连续输出数据时,print函数有两个参数:分隔字符串和结束字符串。

分隔字符串-sep:sep默认等于一个空格

结束字符串-end:end默认等于转义字符串换行(\n)

print(1, 2, 3)            #输出1 2 3
print(1, 2, 3, sep="@")   #输出1@2@3
print(1, 2, 3, end="\t")  #输出1    2    3

格式化输出

name = '小陈'
age = 20
edu = '理工大学'
print('年龄为',age,'岁的',name,'考上了',edu)
# f-字符串(格式化字符串字面值)
content = f'年龄为{age}岁的{name}考上了{edu}'
print(content)
# format()方法
content1 = '年龄为{}岁的{}考上了{}'.format(age,name,edu)
print(content1)

输出结果均为 年龄为20岁的小陈考上了理工大学

运算符

Python常用运算符有算术运算符、赋值运算符、比较运算符和逻辑运算符

—— 算术运算符:+、-、*、/、//、%、**

/ 除运算得到的结果是一个浮点数

// 整除,即向下取整

% 求余数

** 幂运算

a = 45
b = 12
print(a + b)     #结果为57
print(a - b)     #结果为33
print(a * 2)     #结果为90
print(a / 9)     #结果为5.0
print(a // b)    #结果为3
print(a % b)     #结果为9
print(3 ** 2)    #结果为9
print(4 ** 0.5)  #结果为2.0

——比较运算符:==、!=、>、<、>=、<=,比较运算得到的结果是布尔值True或False

print(10 == 12)     #False
print(10 != 12)     #True
print(3 > 5)        #False
print(3 < 6)        #True
print(12 >= 10)     #True
print(12 <= 10)     #False

—— 逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)

and – 链接两个条件,如果两个条件都成立,结果才为True,反之,结果为False。

短路操作:and左边的条件是False,直接判定整体是False

or – 链接两个条件,如果or两边的条件都不成立,结果是False,反之结果为True。

短路操作:or左边条件是True,直接判定整个条件是True

not – 取反

True and True   # True
True and False
False and False
False and True

True or True
True or False
False or False  # False
False or True

not True == False
not False == True

——赋值运算符:=、+=、-=、*=、/=、//=、%=、**=

  • 所有的赋值运算符最终目的是给变量赋值
  • 赋值运算符左边必须是变量,右边可以是任何有结果的表达式
  • 复合赋值运算符左边必须是赋过值的变量,先算赋值运算符右边的,再算赋值运算符
a = 10
b = 3
a += b   # 等价于a = a + b

a *= b + 2  # 等价于a = a * (b + 2)

运算符的优先级

  • 算术运算符:** > *、/、//、% > +、-
  • 有小括号先算小括号里面的
  • 算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符

类型转换

转换为整型

  • 浮点型能够转整型。向小取整,不会进行四舍五入。

  • 字符串能够转整型。只有去掉引号就是一个整数的字符串才能转整型。

  • 布尔值能够转整型。True => 1;False => 0

print(int('123'))   #123
print(int(True))    #1
print(int(12.3))    #12

转换为浮点型

  • 浮点型能够转浮点型。在整数后面添加.0。

  • 字符串能够转浮点型。只有去掉引号就是数值的字符串才能转整型。

  • 布尔值能够转浮点型。True => 1.0;False => 0.0

print(float('12.3'))   #12.3
print(float('12.'))    #12.0
print(float('.3'))     #0.3
print(float('12'))     #12.0
print(float(12))       #12.0
print(float(True))     #1.0

转换为布尔型:所有的数据都能转布尔值

  • 能够转为Flase的数据:0、0.0、None、’’、[]、()、{}
  • 其余都能转换为True
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool([]))
print(bool(()))
print(bool({}))

分支结构与循环结构

分支结构关键字有:if、else、elif

单分支结构

if 条件1:
    代码块1
else:
    代码块2

三目运算符(单分支结构):

  • 变量 = 结果1 if 条件 else 结果2
  • 符合条件,变量的值为结果1,否则为结果2

多分支结构

if 条件1:
    代码块1
elif 条件2:
    代码块2
elif 条件3:
    代码块3
#    ...
else:
    代码块N

嵌套分支结构

if 条件1:
    代码块1
else:
    代码块2
#代码块再写成分支结构的样式

分支结构实例

# 判断一个年份是否是闰年?

# 多分支结构
year = 1900
if year % 4 == 0 and year % 100 != 0:
    print(f'{year}是闰年')
elif year % 400 == 0:
    print(f'{year}是闰年')
else:
    print(f'{year}是平年')
    
#单分支结构
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f'{year}是闰年')
else:
    print(f'{year}是平年')  

#三木运算符
result = f'{year}是闰年' if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) else f'{year}是平年'
print(result)

循环结构有关关键字有:for、in、while、break、continue、else

range():生成序列,是左闭右开区间,step默认为1

  • range(N):可以产生0到N-1范围的整数,N>0

    for i in range(5):
        print(i)
    # 0 1 2 3 4
    
  • range(M,N):可以产生M到N-1范围的整数,M<N

    for i in range(5,11):
        print(i)
    # 5 6 7 8 9 10
    
  • range(M,N,step):可以产生M到N-1范围的整数,从M开始每间隔 |step| - 1 个元素获取一个元素,M<N

    for i in range(1,11,3):
        print(i)
    # 1 4 7 10
    
  • range(N,M,step):可以产生N到M-1范围的整数,从N开始每间隔 |step| - 1 个元素获取一个元素,N > M

    for i in range(11,1,-3):
        print(i)
    # 11 8 5 2
    

for-in循环

for 变量 in 序列:
    代码块

# 计算1-100的和
total = 0
for i in range(1, 101):
    total += i
print(total)

while循环

while 条件:
    代码块

# 猜数字游戏
import random
# randint()是一个闭区间
num = random.randint(1,100)
flag = True
while flag:
    num_1 = int(input('请输入一个数字:'))
    if num_1 > num:
        print('再小一点')
    elif num_1 < num:
        print('再大一点')
    else:
        print('恭喜猜对了')
        flag = False

for-else循环

# 案例:寻找100以内所有的素数(质数)
# 素数:只有1和本身两个因子,素数是从2开始的。
for i in range(2, 101):
    if i == 2:
        print('2是素数')
    else:
        for j in range(2, i):
            if i % j == 0:
                print(f'{i}不是素数')
                break
        else:
            print(f'{i}是素数')

如果for循环正常结束,else语句被执行。for循环非正常结束,else语句不执行。

break、continue、pass的区别

——break:直接结束掉break所在循环(break停掉的时它上方离它最近的并且是所在的循环)

——continue:直接结束continue所在循环的当前循环,进入下一次循环

——pass:pass 不做任何事情,一般用做占位语句

列表

什么是列表?

  • 列表是由一系列元素按照特定顺序构成的数据序列
  • 列表中可以保存任意类型的数据,允许有重复元素
  • 列表使用 [] 来包围数据,列表中的元素用 逗号 间隔

列表的性质

  • 列表是有序的。有序即每个元素都存在独一无二的下标
  • 列表是可变数据类型。可以对列表本身做修改(增删改)

列表基本操作

  1. 列表的拼接

  2. 列表的重复

  3. 成员运算

  4. 列表比较大小

    # 列表的运算
    list1 = [35, True, 'abc', [3]]
    list2 = [1, 2, 3]
    
    # 1.列表的拼接
    list3 = list1 + list2
    print('列表拼接',list3)
    #列表拼接 [35, True, 'abc', [3], 1, 2, 3]
    
    # 2.列表的重复
    list4 = list1 * 3
    print('列表的重复',list4)
    #列表的重复 [35, True, 'abc', [3], 35, True, 'abc', [3], 35, True, 'abc', [3]]
    
    # 3.成员运算:in、not in
    # 成员运算结果是布尔值
    print(3 in list1)   # False
    print([3] in list1) # True
    
    # 4.列表的比较大小
    list5 = [1, 2, 'abc', 5]
    list6 = [1, 2, 'abd', 5]
    print(list5 < list6)
    #True
    

列表的索引

  • 索引从头开始,第一个索引是0,第二个索引是1,以此类推
  • 索引从尾开始,最后一个索引是-1,往前一位索引是-2,以此类推
list = ['你', '也', '在', '学', 'python', '吗', '?']
print(list[0])   #你
print(list[4])   #python
print(list[-1])  #?

列表的切片

切片就是从原序列中拿出一段数据,拿出的数据整体的数据类型不变,step默认为1。

  • 变量[M:] – 表示从下标为M的位置获取到最后
  • 变量[:N] – 表示从起点取到 N-1 的位置(切片:左闭右开区间)
  • 变量[:] – 表示从起点取到终点
  • 变量[M:N:step] --表示从M取到N-1,每间隔 |step| - 1 个元素获取一个元素,如果step > 0的,M<N;反之,M>N
print(list[2:])
#['在', '学', 'python', '吗', '?']
print(list[:5])
#['你', '也', 在', '学', 'python']
print(list[1:7:2])
#['也', '学', '吗']

切片时,索引可以越界,但查看数据时索引不可以越界。

列表的遍历

  1. 直接遍历

    for i in list1:
        print(i)
    
  2. 间接遍历

    len():能够计算出序列的长度

    for i in range(len(list1)):
        print(list1[i])
    

列表的相关方法

  1. count():统计某一个元素在列表中出现的次数
  2. index():查找某个元素在列表中的位置(下标)
  3. reverse():列表反转
  4. sort():列表排序,默认为升序,设置参数reverse=True,则是降序

列表的的增删改查

list = ['绿皮书', '美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界']
    • append():追加

      list.append('长津湖')
      #list=['绿皮书', '美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
      
    • insert():插入

      list.insert(1,'长津湖')
      #list=['绿皮书', '长津湖', 美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
      
  1. 改(重新赋值)

    list[2] = '霸王别姬'
    #list=['绿皮书', '长津湖', 霸王别姬', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
    
  2. index():从左向右查找元素,找到这个元素第一次出现的位置就停止查找返回下标,找不到报错。

    #默认从开头开始找
    index1 = movie_list.index('长津湖')
    print(index1)
    #指定开始查找的位置
    index2 = movie_list.index('长津湖', 2)
    print(index2)
    
    • del

      del movie_list[-1]
      #list=['绿皮书', '长津湖', 霸王别姬', '怦然心动', '这个杀手不太冷', '楚门的世界']
      
    • remove()

      remove():根据指定的内容删除元素,某个元素多次出现,只删除第一次出现的该元素

      movie_list.remove('长津湖')
      
    • pop()

      pop():根据指定的下标删除元素,能够知道删除的是什么

      content = movie_list.pop(-1)
      print(content)  #楚门的世界
      
    • clear()

      清空列表

      list.clear()
      

列表推导式

在创建列表的同时向列表中添加元素。

列表推导式一般情况下代码简洁并且效率高,语法为:

[变量相关公式 for 变量 in 序列 (if 语句)]

实例:

  1. 利用列表推导式 存放指定列表中字符串的长度

    list1 = ["good", "nice", "see you", "bye"]
    len_list = [len(i) for i in list1]
    #len_list = [4, 4, 7, 3]
    
  2. 利用列表推到是将列表中的整数提取出来

    list2 = [True, 17, "hello", "bye", 98, 34, 21]
    new_list = [i for i in list2 if type(i) == int]
    #new_list = [17, 98, 34, 21]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值