当前位置: 移动技术网 > IT编程>脚本编程>Python > python基础

python基础

2018年03月11日  | 移动技术网IT编程  | 我要评论
1.copy.copy()      浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。子对象(数组)修改,也会修改

2.copy.deepcopy()  深拷贝 拷贝对象及其子对象(原始对象)

目录

一、变量

二、函数

三、容器

1.字符串

字符串特点

字符串遍历

字符串替换

字符串查找

字符串切片

字符串去掉两侧空格

2.列表

列表优缺点

列表遍历

列表插入和删除

列表元素排序

列表查找元素

3.元组

元组特点

4.字典

字典特点

字典添加、修改、获得元素

字典删除

字典遍历

5.文件

文件概述

文件打开方式

文件读写方法

文件拷贝

文件和目录操作


一、变量

1.定义:变量用来临时存储运行中所需的数据

2.命名规则:
    (1)标识符必须由数字、字母和下划线组成,数字不能开头
    (2)标识符区分大小写
    (3)变量名一般小写加下划线,不能和关键字冲突

3.类型:
    integer(整数) float(浮点数) string(字符串)
    不需指定类型,根据赋值来推断变量类型

4.字符串和数字的运算规则
    (1)数字和数字之间可以进行所有运算
    (2)数字和字符串之间只能乘法
    (3)字符串和字符串之间可以进行加法

 

二、函数

1.优缺点
    优点:减少代码冗余,减少维护量;功能的封装,降低学习成本,提升开发速度
    缺点:函数定义不回自动执行,函数需要调用才能执行

2.位置参数和关键字参数
    位置参数:按照从左往右的顺序传递叫做位置参数
    关键字参数:按照形参名字传递叫做关键字参数

    位置参数一定要在关键字参数的前面
    my_add(100,200,300,num4=10)

3.return关键字
    (1)函数执行到return,会马上终止函数执行
    (2)函数中可出现多个return,但是有且只有一个return会被执行
    (3)return 单独使用,等价于 return None

4.默认参数
    注意:如果一个函数设置了默认参数,那么该位置之后的所有参数都必须设置默认参数

5.按ctrl+q可查看函数功能说明

三、容器

1.字符串

字符串特点

1.字符串一旦定义,不允许修改

2.字符串容器中的元素都是字符类型的

字符串遍历

my_str='hello'
# 1.while循环方式遍历
i=0
while i<5:
    print(my_str[i], end = ' ')
    i+=1
print()

# 2.for循环方式遍历
for v in my_str:
    print(v, end = ' ')

字符串替换

str='远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗,茹'

# replace 并不会替换原本的字符串, 替换完之后返回一个新的字符串
# 未加参数,所有的‘茹’变为‘如’
new_str=str.replace('茹',‘如’)

# 加了参数,第一个‘茹’变为‘如’
new_str=str.replace('茹',‘如’,1)

字符串查找

# 方法一:find函数
# 1.找到字符串中‘@’位置
# 2.获得字符串中的字串
# 3.如果找到,返回第一次出现的位置;如果未找到,返回-1
user_email='lt@com.cn'
position=user_email.find('@')
if position==-1:
    print('邮箱不合法')
else:
    username=user_email[:position]
    houzhui=user_email[position+1:]
# 方法二:split函数
user_email='lt@com.cn'
result=user_email.split('@')
print('用户名:',result[0])
print('邮箱后缀:',result[1])

字符串切片

user_email='lt@com.cn'

# 切片语法,左闭右开
print(user_email[0:4])

# 起始值不写表示从0开始
print(user_email[:4])

# 结束值不写表示到最后
print(user_email[0:])

# 步长(可为负数:表示从右到左)
print(user_email[0:8:2])

# 字符串逆序
print(user_email[::-1])

字符串去掉两侧空格

username=input('请输入你要注册的用户名')

# strip 函数默认去除字符串两侧的空格
new_username=username.strip()

# isalpha 判断字符串所有元素是否为字母
if new_username.isalpha:
    print('注册成功')
else:
    print('注册失败')

 

2.列表

列表优缺点

优点:
1.根据索引查找元素效率高
2.尾部插入和删除元素效率较高

缺点:
1.在制定位置插入和删除元素,会造成数据元素的移动,效率较低
2.根据关键字查找数据,效率较低

列表遍历

my_list=[10,20,30,40]

# while遍历
index=0
while index<len(my_list):
    print(my_list[index])
    index+=1

# for 遍历
for v in my_list
    print(v)

 

my_list=[[10,20,30],[100,200,300],[1000,2000,3000]]

# while遍历
i=0
while i<len(my_list):
    j=0
    while j<len(my_list[i])
        print(my_list[i][j])
        j+=1
    i+=1

# for 遍历
for i in my_list
    for j in i
        print(j)

列表插入和删除

# 创建空列表
my_list=[]

# append 在尾部插入元素
my_list.append(10)
my_list.append(20)
my_list.append(30)

# insert 在指定位置插入元素
my_list.insert(0,100)

# pop  根据位置删除 默认删除最后一个,若指定了位置,则删除该位置元素
my_list.pop()
my_list.pop(1)

# remove 移除 根据值删除
my_list.remove(20)

# clear 清空 清除
my_list.clear()

列表元素排序

# 产生随机列表
import random

my_list=[]
i=0
while i<10:
    random_number=random.randint(1,100)
    my_list.append(random_number)
    i+=1

# 升序排序
my_list.sort()

# 降序排序
my_list.sort(reverse=True)

#逆序
my_list.reverse()

列表查找元素

# 查找到值为 old_value 的位置
pos=my_list.index(old_value)

# 将列表 my_list2 的所有元素追加到列表 my_list 的尾部
my_list.extend(my_list2)

 

3.元组

元组特点

1.元组一旦创建无法修改
2.元组中只有一个元素时,须在尾部额外添加一个逗号
3.元组比列表更省空间
4.元组是序列式容器,支持索引、切片
5.元组从语法层面限制数据的意外修改
my_tuple=(10,20,30)

# 遍历
for v in my_tuple
    print(v)

# 查询
pos=my_tuple.index(2)

# 切片
print(my_tuple[1:])

 

4.字典

字典特点

1.字典的键不能重复,值可以重复
2.字典是非序列式容器,不支持索引,也不支持切片
3.字典的查找效率较高,但是比较占内存,字典以空间换时间

字典添加、修改、获得元素

# 获得字典的值
my_dict={'name':'obama','age':19,'gender':'男',101:100}

# 使用中括号访问字典中的元素:如果不存在会报错,程序中止
print(my_dict['name'])

# 使用 get 方法,如果 key 不存在默认返回 None,也可以指定默认返回值
print(my_dict.get['age', '我是默认值'])
# 添加和修改元素
my_dict={'name':'obama','age':19,'gender':'男',101:100}

# 如果 key 不存在是新增元素
my_dict['score']=99

# 如果 key 存在就是修改元素
my_dict['name']='trump'

字典删除

my_dict={'name':'obama','age':19,'gender':'男',101:100}

# del
del my_dict['name']

# 清空字典
my_dict.clear()

# del 不但能够删除字典中的某个键值对
# 还能删除变量
a=10
del a

# 删除列表中的元素
my_list=[1,2,3]
del my_list[1]

字典遍历

my_dict={'name':'obama','age':19,'gender':'男',101:100}

# 默认只能遍历出来键
for v in my_dict
    print(v)

# keys 方法可以获得所有的键列表
key_list=my_dict.keys()

# values 方法可以获得所有的值列表
value_list=my_dict.values()

# items 方法可以获得所有的键值对列表,每一个键值对都是一个元组
# 1.for循环遍历
value_value_list=my_dict.items()
for key_value in value_value_list
    print('key:',key_value[0],'value:',key_value[1])

# 2.while循环遍历
my_list=list(my_dict.items())
i=0
while i<len(my_list)
    print('key:',my_list[i][0],'value:',my_list[i][1])
    i+=1

 

三、文件

文件概述

文件的作用就是计算机存储数据

文件打开方式

1.文件打开方式分两种: 文本模式  二进制模式
                      r w a    rb wb ab

2.打开文件用的文本模式,会进行换行符的转换
    程序:hello world\n
    -> windows hello world\r\n
    -> mac hello world\r
    -> linux hello world\n

3.打开文件用的二进制模式,不会进行换行符的转换
4.文件本质上都是以二进制的方式存储在磁盘上
# 读方式打开文件 r
f=open('a.txt','r')
content=f.read()
f.close()

# 写方式打开文件 w
# w 模式默认覆盖文件中的数据
# w 模式如果文件不存在,则会创建文件
f=open('a.txt','w')
f.write('hello world')
f.close()

# 追加方式打开文件 a
f=open('a.txt','a')
f.write('hello world')
f.close()

文件读写方法

# 1.write 函数用法
f=open('a.txt','w')
# write 函数一次写一行
f.write('hello world')
# writelines 一次可以写多行,参数是一个列表,列表的每个元素都是一行数据
lines=['aaa\n','bbb\n','ccc\n']
f.writelines(lines)
f.close()

# 2.读操作
f=open('a.txt','r')
# read 没有制定参数,则读取文件中的所有数据
# read 指定参数,则读取参数指定个数的数据
content=f.read()

# 一次读取一行
content=f.readline()

# 一次读取所有行
content=f.readlines()
f.close()

文件拷贝

# 1.输入要拷贝的文件名
old_file_name=('请输入你要拷贝的文件名:')

# 2.读取要拷贝的文件内容
new_file_name=old_file_name+'.bk'

# 3.打开新的文件
f_old=open(old_file_name,'rb')
f_new=open(new_file_name,'wb')

# 4.将老文件内容写到新文件
f_old_cotent=f_old.read()
f_new.write(f_old_cotent)

# 5.关闭新老文件
f_old.close()
f_new.close()

文件和目录操作

import os

# 文件重命名
os.rename('hello.txt','aaa.txt')

# 文件删除
os.remove('aaa.txt')

# 创建和删除目录
os.mkdir('路径')
os.rmdir('路径')

# 获得指定目录下的文件列表
content=os.listdir()

# 获得和设置工作目录
cwd=os.getcwd()
os.chdir('修改后的工作目录')

 

本文地址:https://blog.csdn.net/weixin_43871837/article/details/107083880

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网