python-程序员宅基地

技术标签: python  开发语言  

目录

1 切片

2 列表

2.1 创建

2.2 访问

2.3 更新

2.4 删除

3 元组

3.1 创建

4 字典

4.1 创建

4.2 访问

4.4 修改

4.5 清空

5 集合

5.1 创建

5.2 添加元素

5.3 删除元素 remove

5.4 清空 clear

5.5 获取集合长度

6 函数

6.1 调用函数

6.2 定义函数

6.3 函数参数

6.5 形参实参

7.面向对象

8 文件路径

绝对路径

相对路径

9 文件的读写

10 异常值处理

11 python 测试


在 Python 中,属性访问通常遵循一种约定,即属性名以点号(.)开头。这种约定适用于对象的方法和属性,但不适用于内置函数。

内置函数,如 len()print()abs() 等,是 Python 语言的一部分,它们提供了一种内置的方式来执行特定的操作。这些函数不是对象的方法,因此它们没有点号(.)前缀。

对象的方法是与对象关联的函数,它们通常以点号(.)开头。例如,如果你有一个列表对象,你可以使用 .append() 方法来添加元素,使用 .remove() 方法来删除元素,等等。

1 切片

切片操作可以访问一定范围内的元素,语法如下所示:

sname[start : end : step]

sname:表示序列的名称;
start:开始索引位置(包括该位置),默认为 0;
end:表示切片的结束索引位置(不包括该位置),默认为序列的长度;
step:步长。
以字符串为例,如下所示:

str = 'Python'
print(str[:3])
print(str[3:])
print(str[:])
输出结果:

Pyt
hon
Python

str[:3]:表示从字符串的开头到索引 3(不包括索引 3)之间的子字符串,即 str[0:3],所以输出为 "Pyt"。
str[3:]:表示从索引 3 到字符串的末尾之间的子字符串,即 str[3:len(str)],所以输出为 "hon"。
str[:]:表示从字符串的开头到末尾之间的子字符串,即整个字符串本身,所以输出为 "Python"。

2 列表

python之列表详解_python 列表-程序员宅基地

Python 中没有数组,而是加入了功能更强大的列表(list),列表可以存储任何类型的数据,同一个列表中的数据类型还可以不同;列表是序列结构,可以进行序列结构的基本操作:索引、切片、加、乘、检查成员

2.1 创建

列表中所有元素都放在一个中括号 [] 中,相邻元素之间用逗号 , 分隔,如下所示:


l = [1024, 0.5, 'Python']
#split方法转换成列表
list=num.split
#建立空列表
list=[]

2.2 访问

通过索引访问列表中的值,还可以使用 : 截取范围内的元素,如下所示:

l = [1024, 0.5, 'Python']
print('l[0] -->', l[0])
print('l[1:] -->', l[1:])

输出结果:


l[0] --> 1024
l[1:] --> [0.5, 'Python']

2.3 更新

除了对列表中现有元素进行修改外,还可以使用 append() 向列表中添加新元素,如下所示:


l = [1024, 0.5, 'Python']
# 修改列表中第二个元素
l[1] = 5
# 向列表中添加新元素
l.append('Hello')
print('l[1] -->', l[1])
print('l -->', l)

insert

通过输入的多个连续字符串创建列表,以空格间隔,使用insert函数将“Allen”加到列表最前面,输出完整列表。
a=input().split()
a.insert(0,'Allen')
print(a)
(1)输入
        使用input()函数获取用户输入
(2)创建列表
        使用split函数,对获取到的用户输入,以空格为间隔,创建一个列表
(3)添加到列表最前面
        使用insert函数,将需要添加的内容(字符串'Allen'),添加到列表最前面
        函数用法:需要添加内容的列表.insert(添加的位置,添加的内容)
(4)输出完整列表
        使用print函数,输出列表
(5)交流
        如果大佬看到了,希望可以交流一下,为什么我的三行代码不能直接写成一行,必须写三行。

输出结果:


l[1] --> 5
l --> [1024, 5, 'Python', 'Hello']

2.4 删除


l = [1024, 0.5, 'Python']
# 删除列表中第二个元素
del l[1]
print('l -->', l)
输出结果

l --> [1024, 'Python']
remove
列表名.remove(要移除的元素)

2.5 排序

 

 

sort 与 sorted 区别:

  1. sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
  2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  1. sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)

 

3 元组

元组(tuple)与列表类似,但元组是不可变的,可简单将其看作是不可变的列表,元组常用于保存不可修改的内容。 

3.1 创建

元组中所有元素都放在一个小括号 () 中,相邻元素之间用逗号 , 分隔,如下所示:


t = (1024, 0.5, 'Python')

4 字典

当看到字典这个词时,有些人包括我自己在内,首先映入眼帘的便是新华字典,

我清楚的记得,刚上小学时老师就让每一个学生准备一本新华字典,它的使用大家也应该都清楚,通过拼音、偏旁部首等进行查询;今天我们说的字典(dict)是 Python 的数据结构,因为都叫字典,我们不用想也知道它们是十分相似的,它们的内容都是以键-值(key-value)的方式存在的。

dict 拥有良好的查询速度,dict 中的值可以是任意 Python 对象,多次对一个 key 赋 value,后面的 value 会把前面的 value 覆盖。

4.1 创建

字典的内容在花括号 {} 内,键-值(key-value)之间用冒号 : 分隔,键值对之间用逗号 , 分隔,比如创建字典 d,如下所示:


d = {'name':'小明', 'age':'18'}

# 使用 dict 函数
# 方式一
l = [('name', '小明'), ('age', 18)]
d = dict(l)
********# 方式二**************
d = dict(name='小明', age='18')
******************************
# 空字典
d = dict()
d = {}

4.2 访问

字典中的值通过 key 进行访问,如下所示:


>>> d = dict(name='小明', age='18')
>>> d['name']
'小明'

# 使用 get 方法
>>> d.get('name')
'小明'

4.4 修改

修改操作(方括号),以修改 age 为例,如下所示:


>>> d = dict(name='小明', age='18')
>>> d['age'] = '20'
>>> d['age']
'20'

4.5 清空

d.clear()

5 集合

集合(set)与字典相同均存储 key,但也只存储 key,因 key 不可重复,所以 set 的中的值不可重复,也是无序的

5.1 创建

集合使用花括号 {} 或者 set() 函数创建(方括号),如果创建空集合只能使用 set() 函数,以创建集合 s 为例,如下所示:


s = {'a', 'b', 'c'}

# 使用 set 函数
s = set(['a', 'b', 'c'])

# 空集合
s = set()

集合中重复的元素会被自动过滤掉,如下所示:


>>> s = {'a', 'a', 'b', 'c', 'c'}
>>> s
{'a', 'c', 'b'}

5.2 添加元素

添加元素可以使用 add 或 update 方法,如果元素已经存在,则不进行操作,如下所示:


>>> s = {'a', 'b', 'c'}
>>> s.add('d')
>>> s
{'a', 'd', 'c', 'b'}

>>> s.update('e')
>>> s
{'a', 'b', 'e', 'd', 'c'}

# 添加已经存在的元素 a
>>> s.add('a')
>>> s
{'a', 'b', 'e', 'd', 'c'}

5.3 删除元素 remove

5.4 清空 clear

my_set.clear() 是调用集合对象 my_set 的 clear 方法,
用于清空集合中的元素,而 clear(my_set) 这种写法在Python中是不正确的,
因为 clear 不是一个独立的函数,而是集合对象的一个方
总结来说,clear是方法,而len是函数

5.5 获取集合长度

获取集合的长度,同样使用 len 方法,如下所示:


>>> s = {'a', 'b', 'c'}
>>> len(s)
3

6 函数

6.1 调用函数

#通过一条简单的命令执行一系列复杂的操作

input print 都是函数

name=input("你好 ")

print(name)

l.append(4)

count=len(l) 用变量count来接收返回的结果

#调用函数的明显标志是 ,带上小括号(),()里的内容叫函数的参数

#函数的参数-在调用函数是给函数提供数据

#每个函数都有自己独特的功能,函数就是具有特定功能的代码块

# 函数执行完毕后会得到一个结果,这个结果叫做返回值

#不是每个函数执行完都有结果,所以不是每个函数都有返回值

print(len._name_)

点儿—什么什么的

__name__ 获取指定函数的名字

6.2 定义函数

#define定义
#函数头——def 函数名(参数列表):
def say_hi():
    #函数体-实现函数的功能
    print("hello")

#函数外的其他代码
say_hi()
#先定义函数,然后调用函数,调用之后去执行函数体内的代码



6.3 函数参数

#参数-在调用函数时,想函数提供数据
#函数返回值,就是调用函数后获取到的结果
def get_max(a,b):
    v=a
    if b>a:
        v=b
    return v
#将v返回给函数外界,也就是函数调用的位置
i=get_max(5,8)
print(i)

6.4 变量的作用域

#在函数外定义的变量 叫全局变量
全局变量可以在函数内使用,但不能在函数内直接修改
如果一定要在函数内修改全局变量的值,需要使用global关键字
global i
i=0


#      内           局部变量
局部变量只能在函数内使用和修改

6.5 形参实参

定义函数时可以设置参数的默认值

7.面向对象

class CuteCat:
    #用首字母大写来区分单词
    def __init__(self)
    #括号里面可以放任意数量的参数,但第一个参数永远是被占用的,得用于表示对象自身,
    约定俗成叫self,他能帮你把属性的值绑定在实例对象身上,如下所示
    self.name="Lambton"
    #如果不写self.,python会觉得至少给普通的变量name赋值

#创建个猫猫对象
cat1=CuteCat()
对象.属性名
print(cat1.name)

    

定义方法

和定义普通函数差不多def

1.要写在class里

2.第一个参数被占用(self)

class Student:
    def__init__(self,name,id):
        self.name=name
        self.id=id
        self.grades={"语文":0,"数学":0,"英语":0}#字典

    def set_grade(self,course,grade):
        if cousre in self.grade:#看传进来的course是不是字典里的键
            self.gredes[course]=grade #如果是就让传进来的course建,对应传进来的grade值
chen=Student("小陈",2018136623)

chen.set_grade("数学",87)

        
    


8 文件路径

在计算机领域中,绝对路径和相对路径是用来定位文件或目录的两种不同方式。它们可以用于 Linux 和 Windows 系统中,但在使用上有一些细微的区别。

绝对路径

Linux: 在 Linux 系统中,绝对路径是从根目录 / 开始的路径。例如,/home/user/Documents/file.txt 是文件 file.txt 的绝对路径,它从根目录开始一直到文件。

Windows: 在 Windows 系统中,绝对路径是从盘符开始的路径。例如,C:\Users\Username\Documents\file.txt 是文件 file.txt 的绝对路径,它从盘符 C: 开始一直到文件。

相对路径

Linux: 在 Linux 中,相对路径是相对于当前工作目录的路径。例如,如果当前工作目录是 /home/user,那么相对路径 Documents/file.txt 将会指向 /home/user/Documents/file.txt

Windows: 在 Windows 中,相对路径也是相对于当前工作目录的路径。例如,如果当前工作目录是 C:\Users\Username,那么相对路径 Documents\file.txt 将会指向 C:\Users\Username\Documents\file.txt

需要注意的是,在使用相对路径时,当前工作目录的位置对路径解析是至关重要的。可以使用命令行或脚本中的 cd 命令(在 Linux 和 Windows 中都适用)来改变当前工作目录。

9 文件的读写

Python 在文件读写操作中,会使用「内置函数」和「Pandas 库」两种方式。

先来看内置函数,包括 open()、read()、readline()、readlines()、write()、writelines()、close() 等方法,也是接下来给大家详细介绍的内容。

再看 Pandas 库,包括 read_csv()、to_csv()、read_excel()、to_excel()、read_json()、to_json() 等方法,我们后面讲到 Pandas 库的时候,再详细讲讲。
打开文件open

hello = open('hello.txt', 'r')

关闭文件close

hello.close()

读文件

con=hello.read()

写入文件write

# 创建一个列表
txtlist = ['Python 私教\n', 'Java 私教\n', 'C++ 私教\n']

# 写入文件
with open('hello.txt') as hello :
    hello.writelines(txtlist)

10 异常值处理

  • 捕获异常 try…except…
  • try:
        print('-----test--1---')
        open('123.txt','r')
        print('-----test--2---')
    except IOError:
        pass
    

  • 把可能出现问题的代码,放在try中
  • 把处理异常的代码,放在except中
  • else
  • 咱们应该对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;同样在try…except…中也是如此,即如果没有捕获到异常,那么就执行else中的事情
    try:
        num = 100
        print(num)
    except NameError as errorMsg:
        print('产生错误了:%s'%errorMsg)
    else:
        print('没有捕获到异常,真高兴')
    

  • try…finally…
  • 在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。比如文件关闭,释放锁,把数据库连接返还给连接池等。
    import time
    try:
        f = open('test.txt')
        try:
            while True:
                content = f.readline()
                if len(content) == 0:
                    break
                time.sleep(2)
                print(content)
        except:
            #如果在读取文件的过程中,产生了异常,那么就会捕获到
            #比如 按下了 ctrl+c
            print("捕捉到异常")
        finally:
            f.close()
            print('关闭文件')
    except:
        print("没有这个文件")
    

    11 python 测试

  • assert 后面可以跟任何布尔表达式,也就是值为true或false的表达式
  • 求值为true 无事发生;求值为false,就会产生AssertionEorror,断言错误
  • 那么此时程序就终止了,我们无法知道后面代码中是否还有其他的错误
  • 所有我们一般会使用专门做测试的库
  • unittest

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_47298785/article/details/136555483

智能推荐

SECS/GEM实现_secs gem引用哪个using-程序员宅基地

文章浏览阅读4.1w次,点赞2次,收藏4次。SECS/GEM是半导体以及光伏行业等采用的通讯基础,在此之上进行搭建EAP,MES等管理系统。SECS/GEM使用起来会有许多注意内容,例如TCP/UDP,R232等通讯问题,以及通讯安全问题等。通讯双方认证,避免信息暴露以及后门问题等。金南瓜DMS安全,且经过大量工厂严格考验,其中不乏JECT,科瑞,三安等,在稳定性要求极高,稳定性高的SECS/GEM也带来设备的极好体验,让客户工程师使..._secs gem引用哪个using

在Lazarus中对字符串进行代码页转换_lazarus codepage-程序员宅基地

文章浏览阅读2.3k次。由于Lazarus基于UTF-8,因此当读写Windows建立的纯文本文件的时候,由于其中的中文使用GBK(CP936)编码,可能会出现错误。此时可使用Lazarus自带的代码页转换单元LConvEncoding对编码进行转换。如UTF8和GBK互转function CP936ToUTF8(const s: string): string; // Chinesefunction UTF8_lazarus codepage

基于Intel 的淡水养殖水质溯源、优化系统方案_水产养殖 数字孪生方案-程序员宅基地

文章浏览阅读297次。8月24日,日本政府无视国际社会的强烈质疑和反对,单方面强行启动福岛核污染水排海。海关总署决定在当日起全面暂停了进口原产地为日本的水产品。海鲜市场遭遇了前所未有的困境。消费者对于核污水问题的恐慌已经超越了个人口腹之欲,海鲜销售量急剧下降。同时,二级市场对核污染水排海事件的敏度同样很高。受该消息影响,核污染水排海相关多个概念股异动,出现大幅度拉升甚至涨停。淡水水产可能会成为其替代品,从而推动淡水养殖行业的景气度提升。_水产养殖 数字孪生方案

以太网与 TCP/IP_以太网和tcpip协议关系-程序员宅基地

文章浏览阅读5.4k次,点赞4次,收藏23次。以太网(Ethernet)以太网是一套标准,制定了相当于 OSI 模型 中第一层(物理层)和第二层(数据链路程)的技术规范。在物理层上,以太网采用 RJ45 接口和双铰线,光纤,电磁波等方式来传递信号。在数据链路层上,每个通信节点(主机的网络接口)都有 48 位(bit)全局唯一的 MAC 地址。通信数据流被切分并打包成帧(Frame)来发送,每帧都包含来源节点和目的节点的 MAC 地址。网段(Network Segment)中继器,集线器是和网线一样工作在物理层的硬件设备。被它们连接在一起的部分_以太网和tcpip协议关系

INT 10H功能_int10 颜色 背景-程序员宅基地

文章浏览阅读1.2k次。INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 INT 10H。底下是它们的说明:AH_int10 颜色 背景

本机MySQL数据库安装_mysql本地安装-程序员宅基地

文章浏览阅读823次。本机MySQL数据库安装比较简单,但坑比较多,很容易出现安装好了但是在某些时候不能使用的情况;另外在卸载的时候,也容易出现卸载不干净,造成二次安装失败的情况,所以在安装前,一定要检查清楚,本地是否已经安装了MySQL。_mysql本地安装

随便推点

Android事件分发-来龙去脉_android drop事件分类-程序员宅基地

文章浏览阅读264次。关键词:Android、事件分发、源码剖析情境(Situation)1. 专注于移动互联网数年,作为高P的我【鼓掌】竟然对事件分发机制见招拆招,似懂非懂。不专业,没法忍。2. View树的递归嵌套逻辑让广大一线同行云里雾里,手足无措。冲突(Complication)1. 网上好多相关主题的博客,描述信息点非常多(但是ACTION_CANCEL描述很少),看完后不明觉厉。2. 事件分发主..._android drop事件分类

Git详解_git 理论-程序员宅基地

文章浏览阅读201次。版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS(就类似于自己写很多个版本一样,不断改进的版本)所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。..._git 理论

elf/lib/rv32i/ilp32\libc.a(lib_a-closer.o): in function `.L0 ‘: closer.c:(.text+0x1c): warning: _clo_warning: _close is not implemented and will always-程序员宅基地

文章浏览阅读1.9k次。使用eclipse工具新建工程,编译报错,elf/lib/rv32i/ilp32\libc.a(lib_a-closer.o): in function `.L0 ':closer.c:(.text+0x1c): warning: _close is not implemented and will always fail具体log信息如下:查看工程设置。project->properties->toolchains:toolchains path空出来,什么都不填._warning: _close is not implemented and will always fail

Oracle to_char格式化函数 _oracle 格式化数字为4位-程序员宅基地

文章浏览阅读903次。 Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。注意:所有格式化函数的第二个参数是用于转换的模板。表 5-7. 格式化函数 函数返回描述例子to_char(timestamp, text)text把 timest_oracle 格式化数字为4位

golang unicode转utf-8_golang unicode转utf8-程序员宅基地

文章浏览阅读4.5k次。golang unicode转utf-8Unicode和utf-8的区别具体转换代码Unicode和utf-8的区别参考文章具体转换代码func handleResponse(resp *http.Response) (string, error) { respBytes, err := ioutil.ReadAll(resp.Body) defer resp.Body.Close()..._golang unicode转utf8

【全解析 | PTA】浙大版《Python 程序设计》题目集-第三章_len('3//11//2018'.split('/'))的结果是_____。-程序员宅基地

文章浏览阅读5.2k次,点赞52次,收藏111次。Python/PTA/浙大版/Python程序设计/题解_len('3//11//2018'.split('/'))的结果是_____。