标准库:不需要下载安装,import后就可以调用;

第三方库:需要下载安装才能import。

ctrl+B  导航到方法的定义


sys模块:

sys.path  以列表的形式返回环境变量

sys.argv  在pycharm返回绝对路径;在命令行模式下返回相对路径,可输入参数,输入的参数与相对路径组成新的列表。


os模块:

os.system("dir")  只执行命令,不能保存结果。输出当前文件夹内文件目录,并且存在乱码,不能用来赋值。

directory=os.system("dir")  directory不会被赋值。

print(directory)  打印结果为“0”,表示执行成功。

可赋值的命令:

os.popen("dir")  返回对象地址,可赋值

directory=os.popen("dir").read()  返回当前文件夹内文件目录,无乱码。

print(directory)  打印出文件目录。

os.mkdir("new_dir")  在当前文件夹下新建名为“new_dir”的文件夹。

自己创建模块,调用模块时检索顺序为:当前文件夹-->环境变量,找不到的话报错。所以,当把模块放在当前文件夹的上级文件夹里时,报错。

解决办法:

1、将模块文件复制到环境变量下,venv\\lib\\site-packages文件夹下。

2、将模块所在文件夹加入环境变量中。


bytes和str(字节包和字符串):

python存储文件有两种方式:bytes和string,视频文件用bytes存储,文本文件两者都可以,在网络编程中,数据传输只可以用bytes方式,所以以string类型存储的文件需要编码成bytes类型。

python2中bytes和str相同,可以拼接,python3中明确区分开来,不能拼接。

str转换为bytes称为编码,使用encode()命令;

bytes转换为str称为解码,使用decode()命令,括号内填写str的编码类型,缺省时默认为utf-8。

string="四川成都"
print(string.encode(encoding="utf-8"))

print(string.encode("utf-8"))

print(string.encode())

输出相同:  b'\xe5\x9b\x9b\xe5\xb7\x9d\xe6\x88\x90\xe9\x83\xbd'


列表list

lis=['a','b','c','d','e']

print(lis[1])
print(lis[1:])  顾头不顾尾,lis[i,j]表示列表中索引为i到索引为j的元素,不包括索引为j的元素。

输出结果:

b  

['b', 'c', 'd', 'e']

for i in lis:

  print(i)  打印lis的所有元素

二维列表:  lis[i][j],不能用lis[i,j]表示

lis[0:-1]  表示所有元素

lis[0:-1:2]  表示步长为2的所有元素

lis[::2]  表示步长为2的所有元素,与lis[0:-1:2]功能相同

lis[-1]表示最后一个元素,lis[-2:]表示最后两个元素,lis[:2]表示前两个元素。

lis.append('aaa')将'aaa'插入到lis尾部。

lis.insert(2,'aaa')将'aaa'插入到lis的第三位,即索引为2的地方。

lis=['a','b','c','d','e','f']
lis.append('aaa')
lis.insert(2,'bbb')
print(lis)
输出为:  ['a', 'b', 'bbb', 'c', 'd', 'e', 'f', 'aaa']

lis[1]="changed"  将lis第二个元素改为‘changed’。

lis.remove('a')  删除‘a’元素

del lis[i]  删除lis的索引为i的元素

del lis  删除lis变量

lis.pop(i)  删除lis的索引为i的元素,缺省时默认为最后一个元素。

lis.index('a')  返回'a'的索引值

lis.count('a')  返回lis中‘a’的个数

lis.reverse()  翻转lis的顺序

lis.sort()  将元素按照首字母排序:特殊字符>数字>大写>小写,ASCII码表里的顺序

lis.extend(lis2)  将lis2的元素添加到lis的尾部,lis2不变


lis.copy()  浅copy,只copy列表的第一层。由数据的存储原理决定,列表的第二层在第一层只是地址元素,相当于指针。

浅拷贝四种方法:

import copy
lis=['a','b',['a2','b2'],'c','d']
lis1=list(lis)  列表工厂
lis2=lis.copy()  
lis3=copy.copy(lis)  
lis4=lis[:]  切片

例如:

lis=['a','b',['a2','b2'],'c','d']  

lis2=lis.copy()  lis[2]位置上存储的是['a2','b2']的地址信息,copy方法只拷贝lis的第一层元素,所以当lis[2]改变时,lis2跟着改变,但是当lis的其他第一层元素改变时,lis2不变。

lis=['a','b',['a2','b2'],'c','d']
lis2=lis.copy()
print(lis)
print(lis2)
lis[0]='AAA'
print(lis)
print(lis2)
lis[2][0]='AAA'
print(lis)
print(lis2)

输出:

['a', 'b', ['a2', 'b2'], 'c', 'd']
['a', 'b', ['a2', 'b2'], 'c', 'd']
['AAA', 'b', ['a2', 'b2'], 'c', 'd']
['a', 'b', ['a2', 'b2'], 'c', 'd']
['AAA', 'b', ['AAA', 'b2'], 'c', 'd']
['a', 'b', ['AAA', 'b2'], 'c', 'd']

如果想把一个列表赋值给另外一个列表,引用copy模块:这会增大内存消耗,谨慎使用。

深拷贝:

import copy

lis2=copy.deepcopy(lis)


lis2=lis  会造成lis2和lis指向同一块内存地址,两个变量完全相同,改变任一个变量时,两者一起改变。相当于c#中的引用类型。

lis=['a','b',['a2','b2'],'c','d']
lis2=lis
print(lis)
print(lis2)
lis[0]='AAA'
print(lis)
print(lis2)
lis[2][0]='AAA'
print(lis)
print(lis2)

输出:

['a', 'b', ['a2', 'b2'], 'c', 'd']
['a', 'b', ['a2', 'b2'], 'c', 'd']
['AAA', 'b', ['a2', 'b2'], 'c', 'd']
['AAA', 'b', ['a2', 'b2'], 'c', 'd']
['AAA', 'b', ['AAA', 'b2'], 'c', 'd']
['AAA', 'b', ['AAA', 'b2'], 'c', 'd']


如果有两个值类型的变量a和b,a=b,改变b并不会使a改变。

例如:

b=5
a=b
print(a,b)
b=10
print(a,b)

输出:

5 5
5 10


 元组tuple:只读列表。只有index和count两个方法

tup=('基哥','咪咪two','朱二娃','基佬强','毒炮')

print(tup.index('咪咪two'))

print(tup.count('基哥'))

输出:

1

1


练习:购物车

 1 product_list=[('iphone', 6000), ('bike', 800), ('book', 50),('pen',100),('computer',3000)]
 2 shopping_list=[]
 3 salary=input('input your salary:')
 4 if salary.isdigit():
 5     salary=int(salary)
 6     while True:
 7
 8         '''for item in product:
 9             print(product.index(item),item)
10             '''
11         for index,item in enumerate(product_list):
12             print(index,item)
13         user_choice=input('选择商品:')
14         if user_choice.isdigit():
15             user_choice=int(user_choice)
16             if user_choice<len(product_list) and user_choice>=0:
17                 p_item=product_list[user_choice]
18                 if p_item[1]<=salary:
19                     shopping_list.append(p_item)
20                     salary-=p_item[1]
21                     print('added %s to your shopping cart,your balance is:\033[31;1m %d\033[0m'%(p_item[0],salary))
22                 else:
23                     print('\033[41;1m余额不足,只有%s\033[0m'%salary)
24             else:
25                 print('没有此商品')
26         elif user_choice=='q':
27             print('----shopping list----')
28             for p in shopping_list:
29                 print(p)
30             print('your current balance is:\033[31;1m%s\033[1m'%salary)
31             exit()
32         else:
33             print('invalid option')

购物车

改变输出颜色:
lis=['a','b','c','d']
print('\033[31;1m%s\033[1m'%lis)
print('\033[32;1m%s\033[1m'%lis)
print('\033[41;1m%s\033[1m'%lis)
print('\033[42;1m%s\033[1m'%lis)

输出结果为:

字符串操作:

字符串和列表一样有索引,可以切片操作。

 1 name='zhang haiyang'
 2 name2='zhang\thaiyang'
 3 name3='my name is {my_name},i am {age} years old'
 4 print(name.capitalize())    #首字母大写
 5 print(name.lower())
 6 print(name.upper())
 7 print('gang tian wu'.split())       #以空格为界限把字符串分割成列表
 8 print('1+2+3+4+5'.split('+'))   #以‘+’为界限
 9 print(name.count('a'))
10 print(name.center(50,'-'))      #把name变量居中打印,两边用-补充,总共50个字符
11 print(name.endswith('ang'))       #判断name变量是否以'ang'结尾
12 print(name2.expandtabs(20))     #把name2变量中的\t(Tab键)变成20个空格
13 print(name.find('hai'))     #find方法返回‘hai’首次出现的索引值
14 print(name[name.find('hai'):])      #打印name变量从‘hai’到最后一个字符,相当于列表的切片
15 print(name3.format(my_name='zhhy',age=20))      #格式化输出
16 print(name3.format_map({'my_name':'zhhy','age':20}))    #用字典为格式化输出传值
17 print('zhhy236400'.isalnum())   #是否只包含英文字母和数字
18 print('Zhhy'.isalpha())     #是否只包含字母
19 print('10'.isdecimal()) #是否是十进制数
20 print('010'.isdigit())   #是否是整数
21 print('aaa'.isidentifier())     #是否是合法标识符(变量名)
22 print('Aa'.islower())   #是否是小写
23 print('+'.join(['a','b','c']))      #将列表元素变成字符串,常用
24 print(name.ljust(50,'-'))
25 print(name.rjust(50,'*'))
26 print('  \nzhang'.lstrip())
27 print('zhang \n   '.rstrip(),'haiyang')
28 print('  \nzhang\n   '.strip())
29 p=str.maketrans('abcde','A2345')        #转换对应位置的字符
30 print('apple'.translate(p))
31 print('zhanghai'.replace('a','A',1))        #‘a’替换成‘A’,替换1个,缺省默认全部替换
32 print('ZHang'.swapcase())       #大小写转换
33 print('my name is gangtianwu'.title())      #字符串改变为标题形式

字符串操作


字典:无序,key唯一,可嵌套

key:value

1 dict_216={'weijf':'mimitwo',
2           'liuzhq':'gangtianwu',
3           'zhuhy':'zhuerwa'}
4 print(dict_216)
5 print(dict_216['weijf'])

字典

输出:

{'zhuhy': 'zhuerwa', 'liuzhq': 'gangtianwu', 'weijf': 'mimitwo'}    #无序输出,和输入顺序不同
mimitwo

 1 dict_216={'weijf':'咪咪two',
 2           'liuzhq':'刚田武',
 3           'zhuhy':'朱二娃'}
 4 print(dict_216)
 5 print(dict_216.keys())      #打印字典所有key
 6 print(dict_216.values())        #打印字典所有value
 7 #print(dict_216['tanglh'])       #查找元素,key时返回对应的value,不存在时报错,程序中断,只有在肯定存在此key时才可以使用
 8 print(dict_216.get('tanglh'))       #查找元素,如果key不存在,返回none,不会报错,程序继续执行
 9 print('tanglh' in dict_216)     #查找元素,返回true或者false。python2中语法:dict_216.has_key('tanglh'),python3中不再使用
10 dict_216['weijf']='猪骑士'     #改变字典元素
11 dict_216['chenjq']='鸡鸡'       #增加字典元素
12 del dict_216['weijf']       #删除元素,del方法是python内置方法。
13 dict_216.pop('liuzhq')      #删除元素
14 dict_216.setdefault('tanglh','毒炮')      #key存在时,不改变任何元素,不存在时,创建新的key-value
15 dict_216.setdefault('zhuhy','猪逼')
16 print(dict_216)
17 dict_new={'zhuhy':'潮流富贵猪逼',
18           1:2,
19           3:4}
20 dict_216.update(dict_new)       #合并更新dict_216
21 print(dict_216)
22 print(dict_216.items())     #字典转为列表

字典操作

遍历字典:

dict_216 = {'weijf': '咪咪two','liuzhq': '刚田武','zhuhy': '朱二娃'}
for i in dict_216:          #高效,推荐使用print(i,dict_216[i])
print('-----')
for i,j in dict_216.items():        #dict_216.items()先把dict_216转换成列表再遍历,效率低,不推荐使用print(i,j)
print('-----')
for i in dict_216:      #只遍历key,不打印valueprint(i)

转载于:https://www.cnblogs.com/zhhy236400/p/9594383.html

Python学习week2相关推荐

  1. Python学习 Week2 part1

    本周内容较多,一时间消化不了,分两段写出来 part1:列表和元组 part2:字符串和字典等 列表 #列表的定义 #list=['list0','list1','list2'','...'] nam ...

  2. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  3. pygame是python的一个库吗,python学习pygame,,基本库导入impor

    python学习pygame,,基本库导入impor 基本库导入 import pygame import sys from pygame.locals import * 初始化 pygame.ini ...

  4. python科学计数法转换_对比Python学习Go 基本数据结构

    公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...

  5. python学习------tab补全

    python学习------tab补全   python也可以进行tab键补全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env  ...

  6. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  7. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  8. 最新Python学习项目Top10!

    作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...

  9. 200页!分享珍藏很久的Python学习知识手册(附链接)

    这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左侧是目录,可以点击,右侧是对目录知识点的 ...

最新文章

  1. Docker在Ubuntu16.04和Windows10家庭版上安装操作步骤
  2. Python单元测试框架之pytest---如何执行测试用例
  3. [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)
  4. BZOJ2822 [AHOI2012]树屋阶梯
  5. 最简单的基于FFmpeg的AVDevice例子(读取摄像头)
  6. Xamarin效果第十八篇之GIS中复合型Mark
  7. Dancing Stars on Me HDU - 5533
  8. 在Entity Framework 4.0中使用 Repository 和 Unit of Work 模式
  9. mysql执行过程五步_简单五步教你搭建MySQL主从复制
  10. 在SharePoint环境中更换密码
  11. 收藏!50个帮你自我提升的网站
  12. 更改select里面的值
  13. html ios音乐自动播放muted,video下autoplay属性无效的解决方法(添加muted属性)
  14. Windows核心编程笔记
  15. JavaWeb教程———Ajax
  16. 微信境外支付(附PHP例子,JAVA工具类)
  17. 功能测试数据测试之错误推测方法
  18. 那些年,我做过的产品:有的死了,有的活了
  19. tomcat自动化部署(拉取\备份、部署、更新、回滚)
  20. 三大视角,聊聊我眼中的广告系统

热门文章

  1. ★☆★cf D. Petya and Array
  2. 关于爬虫数据的解析器设计
  3. Java List添加元素
  4. linux安装thrift
  5. arguments.callee的临时指向特性
  6. 在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...
  7. java 蓝桥杯算法训练 猴子分苹果(题解)
  8. (73)多路选择器(二选一)
  9. (65)SPI外设驱动用户接收模块(四)(第13天)
  10. (60)UART外设驱动发送驱动(五)(第12天)