Python零基础入门学习笔记(一)

Stella981
• 阅读 371

Python 基础入门学习

一.基本语句

  1. 注释# 单行注释 """多行注释 """

  2. print (" ") 输出函数

  3. 基本运算符: + - * / //(取整) %(取余) **(幂运算)

  4. 变量的定义: 变量名 = 值 (每个变量使用前都必须赋值,变量在赋值以后才会被创造,定义时不需要指定变量类型)

  5. type( ) 查看变量类型函数

  6. input( ) 变量输入函数 用法举例: a = input(“输入数字:”) 输入的任何内容的数据类型默认为字符型str

  7. int(a) float(b) 类型转换函数,将a转换为int型,将b转换为float型

  8. 格式化输出

    print("格式化字符串" % 变量1)

    print("格式化字符串" % (变量1,变量2...))

    (%s - 字符串)

    (%d - 带符号十进制整数——%06d表示输出六位数,不足地方用0补全)

    (%f - 浮点数——%.02f表示小数点后显示两位)

    (%% - 输出%)

  9. f-格式化字符串: print(f’ My name is {name} ')

  10. 转义字符\n 换行 \t 制表符 : 1个tab键(4个空格)

  11. 结束符:python中的 print 默认以 \n 为结束符,即默认换行,但可自己设置,如: print('hello', end="\t")

  12. 标识符 由字母数字下划线组成,不能以数字开头,不能与关键词重名。标识符区分大小写,命名规则推荐多个单词时全部小写并将每个单词用下划线隔开。

  13. if语句: 在Python开发中,Tab和空格一定不能混用!

    if 条件1:

       条件1成立时要执行的代码
    

    elif 条件2:

       条件2成立时要执行的代码
    

    else:

       条件1、2都不成立时执行的代码
    
  14. if语句训练:猜拳游戏

    #if-elif-else训练: 猜拳游戏

    import random

    player = int(input('请出拳 (0-拳头 1-剪刀 2-布):')) computer = random.randint(0,2)

    #平局 if player == computer: print('平局') #电脑胜 elif ( ((player == 0) and (computer == 2)) or ((player == 1)and(computer == 0)) or ((player == 2)and(computer == 1)) ): print('电脑赢了!你个睿智!你连电脑都打不过!') #玩家胜 else: print('你赢了!不容易不容易啊!')

  15. 随机数的实现:

导入 `random` 模块,使用 `randint` (随机整数) 功 如:

    import random
    
    num = random.randint(0,2)

​ (num为0、1、2中的随机一个数)
  1. 三目运算符:

    条件成立时的表达式 if 条件 else 条件不成立时的表达式

如: `MaxNum = a if a>b else b`
  1. While 循环:

    while 条件:

       条件成立时重复执行的代码
    
注意: 计数的初始值习惯写为0
  1. break 和 continue :
`break` 为**终止循环**,即不再循环

`continue` 为退出当前一次循环而直接执行下一次循环,即**跳入下一次循环**
  1. for 循环:

    for 临时变量 in 序列:

       重复执行的代码
    
  2. while 与 else : 如果循环由 break 停止,则else下的代码不执行,for 与 else 的用法与此类似

    while 条件:

       条件成立时重复执行的代码
    

    else:

       循环正常结束之后执行的代码
    

二.基本数据类型

  1. 字符串可以用单引号、双引号、三引号括起来,字符串为不可变类型

  2. python中每个字符串自带下标和索引,可用 str[x] 来精确访问字符串 str 中的某个字符

  3. 切片: 指对 字符串列表元组 进行截取其中一部分的操作

    语法: 序列[开始位置下标 : 结束位置下标 : 步长]

    其中切片不包含结束位置下标对应的数据 ,即开始位置下标和结束位置下标为 [ ) 的包含形式

    下标 和 步长 均可不写或写负数,步长默认为1,若下标开始到结束的方向与步长的方向冲突,则无法选取出数据

  4. 字符串的查找: find() 、index() 、count() 、rfind() 、rindex()

    find() : 检测某个子串是否包含在这个字符串中,如果存在则返回这个子串开始位置的下标,否则返回-1

    字符串序列.find( 子串 , 开始位置下标 , 结束位置下标 )
    

    开始和结束位置下标可以省略,表示在整个字符串序列中查找

    index() : 与find()函数的用法一样,但如果不存在要查找的子串,则会报错

    count() :返回某子串在该字符串中出现的次数,若不存在则返回0

    rfind()rindex() 查找方向为从右侧开始,其功能与 find() 与 index() 相同

  5. 字符串的替换replace() 替换

    字符串序列.replace ( 旧子串、新子串、替换次数 )
    

    注意: replace函数并不会改变原有字符串的数据,修改后的数据是replace函数的返回值

  6. 字符串的分割split() 分割,返回一个列表,丢失分割字符

    字符串序列.split(分割字符,分割次数)
    

    注意:split函数也不会改变原有字符串数据,修改后的数据为函数返回值

  7. 列表的合并join() 合并,返回一个字符串,添加连接字符

    连接字符串.join(多字符串组成的列表)
    

    注意: join() 合并 是 split() 分割 的逆序操作

  8. 字符串修改大小写函数

    capitalize() 将字符串第一个字母转换为大写,其余均为小写

    title() 将字符串中每个单词的首字母转化成大写,其余均为小写

    lower() 将字符串中的大写全部转换为小写

    upper() 将字符串中的小写全部转换为大写

    例:

    initial: brotheR aNd me
    capitalize: Brother and me
    title: Brother And Me
    lower: brother and me
    upper: BROTHER AND ME

  9. 字符串删除空白字符函数

    lstrip() : 删除字符串左侧空白字符

    rstrip() : 删除字符串右侧空白字符

    strip() : 删除字符串两侧空白字符

    例:

    initial: " brother and me "
    lstrip: “brother and me "
    rstrip: " brother and me”
    strip: “brother and me”

  10. 字符串对齐函数: ljust() 、 rjust() 、center()

返回 一个原字符串 左/右/中 对齐,并用指定字符(默认空格)填充至对应长度的新字符串

    字符串序列.ljust( 长度 , 填充字符 ) 
    
    字符串序列.rjust( 长度 , 填充字符 ) 
    
    字符串序列.center( 长度 , 填充字符 )

**例:**

initial: brother and me  
ljust: brother and me----------------  
rjust: ----------------brother and me  
center: --------brother and me--------
  1. 字符串判断开头或结尾函数
`startswith()` : 检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查

    字符串序列.startswith(子串,开始位置下标,结束位置下标)

`endswith()` : 检查字符串是否以指定子串结尾,用法与 startswith()相同

    字符串序列.endswith(子串,开始位置下标,结束位置下标)
  1. 字符串字符类型判断函数
`isalpha()` : 如果字符串非空且只包含**字母**则返回True , 否则返回False

`isdigit()` : 如果字符串非空且只包含**数字**则返回True , 否则返回False

`isalnum()` : 如果字符串非空且只包含**数字或字母**则返回True, 否则返回False

`isspace()` : 如果字符串非空且只包含**空格**则返回True , 否则返回False
  1. 列表 : 可以用下标选取指定数据,列表为可变类型

  2. 列表数据查找函数

`index()` : 返回指定数据所在位置的下标,若数据不存在则报错

    列表序列.index(数据, 开始位置下标, 结束位置下标)

`count()` : 返回指定数据在该列表出现的次数,若数据不存在则返回0

    列表序列.count(数据)

`len()` : 返回列表的长度,即列表中数据的个数

    len(列表序列)
  1. 判断列表中是否存在指定数据
`in` : 判断指定数据在某个序列的存在,存在返回True,否则返回False

    '指定数据' in 列表序列

`not in` : 与 in 的用法相同,返回结果相反
  1. 列表数据增加函数
`append()` : 列表结尾追加数据,若数据为一个序列,则直接追加**整个序列**到列表的结尾位置

    列表序列.append(数据)

`extend()` : 列表结尾追加数据,若数据为一个序列,则将序列的数据逐一添加到列表,若数据为字符串,则将**单独的每个字符**逐一添加到列表

    列表序列.extend(数据)

`insert()` : 指定位置新增数据,增添方式与 append() 相同

    列表序列.insert(位置下表,数据)
  1. 列表数据删除函数
`del 目标(列表名 或 列表指定下标数据)`

`pop()` : 删除指定下标的数据(默认为最后一个),并返回该数据。

    列表序列.pop(下标)

`remove()` : 移除列表中某个数据的第一个匹配项,若匹配失败则报错

    列表序列.remove(数据)

`clear()` : 清空列表中的所有数据

    列表序列.clear()
  1. 列表数据修改函数
**修改指定下标数据**: **列表序列\[下标\] = 数据**

`reverse()` : 将列表数据的顺序逆置

    列表序列.reverse()

`sort()` : 对列表的数据进行排序

    列表序列.sort( key = None, reverse = False)

**注意**: reverse = True 降序 reverse = False 升序(默认)
  1. 列表数据复制函数
`copy()` : 列表数据复制

    新列表序列 = 原列表序列.copy()

即将原列表的数据复制到新列表中
  1. 列表的循环遍历
**while循环方法** :

    i = 0
    
    while i < len(list):
    
        print(list[i])
    
        i += 1

**for循环方法** :

    for i in list:
    
        print(i)
  1. 列表嵌套:指一个列表里包含了其他的子列表。
**例**: `List = [ ['a' , 'b' , 'c'] , ['1' , '2' , '3'] , ['&' , '$' , '%'] ]`
  1. 列表综合训练

    #将8位老师随机分配到3个办公室中 import random teacher = ['a1','a2','a3','a4','a5','a6','a7','a8'] room = [[],[],[]] for i in teacher: n = random.randint(0,2) room[n].append(i) print(room)

    i = 1 for r in room: print(f'办公室{i}的人数是{len(r)},他们分别为:',end = '\t') for name in r: print(name,end = '\t') print() i += 1

  2. 元组: 一个元组可以存储多个数据(与列表相同),但元组内的数据是不能修改的。

**元组名 (数据1 , 数据2 , 数据3)**

**注意**: 如果定义的元组只有一个数据,那么需要添加逗号,凑则数据类型为该数据类型,而不是 元组(tuple) 数据类型,如 tuple = (‘x’ **,** )
  1. 元组的常见操作
**按下标查找数据** : 如tuple1\[0\] 、 tuple1\[1\]等

`index()` : 查找某个数据,用法与字符串、列表的index相同

`count()` : 统计某个数据在当前元组出现的次数

`len()` : 统计元组中的数据个数
  1. 元组数据的修改
**元组内的直接数据如果修改则立即报错**

如果元组里面有列表,可直接修改列表内的数据,如 (‘abc’ , ‘qwe’ , \[‘123’ , ‘456’ , ‘789’\] , ‘jkl’) 元组就可以修改其中的 ‘123’ , ‘456’ , ‘789’ 数据
  1. 字典:字典里的数据是以键值对形式存储的。字典为可变类型
**特点**: 符号为**大括号**,数据为**键值对**形式出现,各个键值对之间**用逗号隔开**。

    dict1 = {
          '键1' : '值1' , '键2' : '值2' , '键3' : '值3' }

空字典除了可以用空大括号创建,也可以用函数创建: dict2 = dict()
  1. 字典常见操作
**增 / 改**: **字典序列\[‘key’\] = 值**

注意: 如果key存在则修改该键对应的值,如果key不存在则新增此键值对

**删**:

`del(dict)` 删除字典

`del dict['Key']` 删除字典中指定键值对

`dict.clear()` 清空字典

**查**:

**按key值写法直接查找**: **字典序列\[‘键’\]**

**按函数写法查找**: get() keys() values() items()

`get()` : 获取某个键对应的值

    字典序列.get(key , 默认值)

**注意**:若当前查找的key不存在则返回默认值,若默认值省略不写则返回None

`keys()` : 获取字典中所有的key,并返回可迭代对象

    字典序列.keys()

`values()` : 获取字典中所有的values,并返回可迭代对象

    字典序列.values()

`items()` : 获取字典中所有的键值对(key 和 values),并返回可迭代对象 ,里面的数据是元组

    字典序列.items()
  1. 字典的循环遍历
遍历字典的**Key**:

    for key in dict1.keys():    
        print(key)

遍历字典的**Value**:

    for value in dict1.values():    
        print(value)

遍历字典的**元素**:

    for item in dict1.items():    
        print(item)

遍历字典的**键值对(拆包)**:

    for key, value in dict1.items():
        print(f'{key} = {value}')
  1. 集合: 创建集合可使用 {} 或 set() ,但是如果要创建空集合只能使用 set() , 因为使用 {} 会创建空字典。
**集合数据特点**: 集合里面的数据会**自动去重**,不允许重复;集合里面的数据没有顺序,且不支持下标。集合是**可变类型**。
  1. 集合的创建
直接创建: `s1 = {10 , 20 , 30 , 40 , 50}`

使用set()创建: `s2 = set('brother')`

创建空集合: `s3 = set()`
  1. 集合中数据的常见操作
**增加数据**: add() update()

`集合.add(数据)` 增加单个数据,要增加的数据在原集合中存在的话,不进行任何操作

`集合.update(数据列表)` 在集合中增加数据序列

**删除数据**: remove() discard() pop()

`集合.remove(数据)` 删除集合中的指定数据,如果数据不存在则会报错

`集合.discard(数据)` 删除集合中的指定数据,如果数据不存在也不会报错

`集合.pop()` 随即删除集合中的某个数据,并返回这个数据

**查找数据**: in 判断数据在集合序列 not in 判断数据不在集合序列
  1. 公共操作:运算符、公共方法、容器类型转换
**运算符**:

`+` 合并,支持字符串、列表、元组

`*` 复制,支持字符串、列表、元组

`in` 元素是否存在,支持字符串、列表、元组、字典

`not in` 元素是否不存在,支持字符串、列表、元组、字典

**公共方法**:

`len()` 计算容器中元素个数

`del()` 删除元素

`max()` 返回容器中元素的最大值

`min()` 返回容器中元素的最小值

`range(start,end,step)` 生成从start到end的数字(其中不包含end数字),步长为step,供for循环使用

`enumerate()` 将一个可遍历的数据对象(列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中

    enumerate(可遍历对象, start=0)

**容器类型转换**:

`tuple(序列)`: 将某个序列转换成元组

`list(序列)`: 将某个序列转换成列表

`set(序列)`: 将某个序列转换成集合
  1. 推导式(生成式): 列表推导式、字典推导式、集合推导式
**作用: 化简代码**

**列表推导式**:用一个表达式创建一个有规律的列表或控制一个有规律列表。

创建0-10的列表:

    list = [i for i in range(10)]

创建0-10的偶数列表:

    list = [i for i in range(10) if i % 2 == 0]

多个for循环列表:

    list = [(i , j) for i in range(3) for j in range(3)]

**字典推导式**:快速合并列表为字典或提取字典中目标数据

**赋值体验**:

    dict = {
         i:i*2 for i in range(1,5)}

**将两个列表合并为字典**:

    list1 = ['name' , 'age' , 'gender']
    
    list2 = ['Tom' , 20 , 'man']
    
    dict = {
          list1[i] : list2[i] for i in range(len(list1)) }

**提取字典中目标数据**:

    counts = {
         'a' : 150 , 'b' : 200 , 'c' : 250}
    
    count = {
         key : value for key , value in counts.items() if value >= 200}

**集合推导式**:

    list = [1,1,2]
    set = {
         i * 2 for i in list}

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这