8、模块初始(库)

一、标准库(不需要安装 python自带)

1、sys

#!/usr/bin/env  python

import sys

 print(sys.path) #打印环境变量
sys.argv #脚本的相对路径
sys.argv[1] #输入的第二个参数。

2、os

import os
os.system("dir")#执行命令不保存结果 dir windows系统命令
cmd_res=os.popen("dir").read()
print("--->",cmd_res)
os.mkdir('new_dir')

 3、创建一个模块

3.1 创建login.py

import getpass
_username='alex'
_password='123'
username = input("username:")
password = input("password:")#getpass.getpass("password:") #pycharm 不好使

if username==_username and _password==password:

    print("welcom user {name} login".format(name=username))
else:
    print("Invalid username or password")
print(password)#缩进表示同级

 ps: import 会首先到当前路径下寻找

导入

import login

 

第三方库(安装后才能使用)

3、Python3 基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

实例(Python 3.0+)

#!/usr/bin/env python
 
counter = 100          # 整型变量
miles   = 1000.0       # 浮点型变量
name    = "runoob"     # 字符串
 
print (counter)
print (miles)
print (name)

执行以上程序会输出如下结果:

 

100
1000.0
runoob

多个变量赋值

Python允许你同时为多个变量赋值。例如:

a = b = c = 1

 

以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量都指向同一个内存地址。

您也可以为多个对象指定多个变量。例如:

a, b, c = 1, 2, "runoob"

 以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。

 标准数据类型

Python3 中有六个标准的数据类型:

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

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

 

三元运算

a,b,c = 1,2,5

d=a if a>b else c

bytes 类型

文本 unicode   str

二进制 bytes

‘ff’.encode('utf-8')

msg='世界你好'

msg.encode('utf-8').decode('utf-8')

列表

names = ['Zhang','Wang','Li','Bu','Guo']
names.append("Liheng")
names[1:3]#顾头不顾尾
ames[-2:]#最后两个
names.insert(1,"Cheng")#下标为1的位置插入
names[2]="Xie"#update

删除

names.remove("Xie")
del names[1]
names.pop()#不输入参数默认最后一个
names.pop(1)

查找某个元素的位置

names.index('Xie')

统计

names.count('Bu')

反转

names.reverse()

排序

names.sort()

 合并两个列表

names2=[1,2,3]
names.extend(names2)

复制列表

names2 = names.copy()

 列表嵌套(复制第一个列表每个元素的引用)

names = ['123','qe',['Alex','MI'],'he']
names2 = names.copy()#names2=names[:] names=list(names)
names[1] = 'QQ'#names2不会更改
names[2][0]='ALEX'#两个列表都会更改
print(names)
print(names2)

完全复制

import copy
names = ['123','qe',['Alex','MI'],'he']
names2 = copy.deepcopy(names)#copy.copy(names)还是浅copy
names[1] = 'QQ'#names2不会更改
names[2][0]='ALEX'#names2不会更改
print(names)
print(names2)

 列表循环

for i in names:
  print(i)

 

for i in names[0:-1:2]:
  print(i)
namess[::2]

元组 (只读列表 )只有两个方法

names = ('123','asd','sdasd')
names.index('asd')
names.count('123')

 字符串操作

name="my name is bu"
name.capitalize()#首字母大写
name.count("m")#统计
name.center(50,'-')#50 个字符,不够用‘-’
name.endswith(".com")#以什么结尾
name.expandtabs(10)#\t (table键)转成多少个空格
name.find("b")#返回字符的下标
name[name.find("n"):9]

 

name="my name is {name} and I am {age} years old"
name.format(name='Wang',age=12)

 

name="123sad"
name.isalnum()#英文字符和数字
name.isalpha()#纯英文字符
name.isdecimal()#十进制
name.isidentifier()#是不是一个变量名
name.islower()#小写
name.isnumeric()#整数
name.isspace()#空格
name.istitle()#每个单词首字母大写
name.isprintable()#tty file drive file 不能打印
name.isupper()
print('+'.join(['1','2','3']))
name.ljust(50,'*')#右边补上*
name.rjust(50,'*')
name.lstrip()#左边去空格和回车
name.rstrip()
name.strip()
p = str.maketrans('abcdedli','123@#456')
"alex li".translate(p)
"KAAsda".replace('K','L',1)
'alex li'.rfind('l')#找到所有l的最右边的l下标
'1+2+3+4+5'.split('+')#默认为空格
'name\nis ales'.splitlines()#按换行分识别不同系统的换行
'ΑleX'.swapcase()#大写变小写,小写变大写
'my name is'.title()
'sad'.zfill(10)#左边补0

 字典

info = {
'stu1101' : 'Wang'
'stu1102' : 'He'
'stu1103' : 'Xiaoze'


}#字典是无序的 key-value
print(info['"stu1101"])

 修改或增加

info['stu1101'] = '武藤兰'#存在就改,不存在就添加
b = {
'stu1101':'212'
'stu1201':'ahd'}
info.update (b)#合并更新与原来相同的key的value
info.items()#转成列表
dict.fromkeys([6,7,8],'text')#初始化一个字典。浅的copy

 删除

del info['stu1101']
del info
info.pop("stu1101")
info.popitem()#随机删

 查找

info = {
'stu1101' : 'Wang'
'stu1102' : 'He'
'stu1103' : 'Xiaoze'


}

info['stu1101']#确定有
info.get('stu1111')#不确定
'stu1104' in info#判断有没有py2.x info.has_key()

 

info.keys()
info.values()

 

多级嵌套字典

info['dalu'][1]='taiwan'
info.setdefault("dalu",{})

 循环

for i in info:
print(i,info[i])

 

for k,v in info.items():#转成了列表,变慢很多
print(k,v)

 练习:三级菜单

#Author: Xiaochun Bu
data = {
    '北京' : {
        '昌平':{
                '沙河':["华北电力大学",'中国石油大学'],
               '高教园':["华北电力大学",'中国石油大学']
               },
        '海淀区':{
             '魏公村':'北京理工大学',
             '中关村':'北京外国语大学'}
           },
    '天津': {
        '昌平': {'沙河': ["华北电力大学", '中国石油大学'], '高教园': ["华北电力大学", '中国石油大学']},
        '海淀区': {'魏公村': '北京理工大学', '中关村': '北京外国语大学'}
    },
    '重庆': {
        '昌平': {'沙河': ["华北电力大学", '中国石油大学'], '高教园': ["华北电力大学", '中国石油大学']},
        '海淀区': {'魏公村': '北京理工大学', '中关村': '北京外国语大学'}
    },

}
exit_flag = True
while exit_flag:
    for i in data :
        print(i)
    choice = input('选择进入》》:')
    if choice in data:
        while exit_flag:
            for i2 in data[choice]:
                print('\t',i2)
            choice2 = input('选择进入》》:')
            if choice2 in data[choice]:
                while exit_flag:
                    for i3 in data[choice][choice2]:
                        print('\t\t', i3)
                    choice3 = input('选择进入3》》:')
                    if choice3 in data[choice][choice2]:
                        for i4 in data[choice][choice2][choice3]:
                            print('\t\t\t', i4)
                        choice4 = input('最后一层,按b返回')
                        if choice4 == 'b':
                            pass
                        elif choice4 =='q':
                            exit_flag=False
                    if choice3 == 'b':
                            break;
                    elif choice3 == 'q':
                        exit_flag = False
            elif choice2 == 'b':
                        break;
            elif choice2 == 'q':
                exit_flag = False
    elif choice == 'b':
        break;
    elif choice4 == 'q':
        exit_flag = False

 集合(去重简单、关系交叉测试)

list_1 = [1,4,5,7,3,6,9]
list_1=set(list_1)#变成集合 无序的
list_2=set([2,6,0,66,22,8,4])
list_1.intersection(list_2)
list_1.union(list_2)
list_1.difference(list_2)
list_1.issubset(list_2)

反向差集

list_1.symmetric_difference(list_2)#对称差集

 相交与否

list_1.isdisjoint(list_2)

运算符操作

s=set([1,2,3,4])
t=set('hello')
a=s | t#并集
b=s & t#交集
c=t-s#差集
d=t^s#对称差集

 添加

list_1 =  set([1,"23"])
list_1.add('1231')
list_1.update([888,777,555])#添加多个
list_1.remove('1')#可以指定,不存在会报错。
len(list_1)
x in s# 字符串、列表、字典、集合都这么写。
list_1.copy()#浅copy
list_1.pop()#不能指定
list_1.discard("23")#不存在do nothing

 

posted on 2018-07-18 16:53  LittleSpring  阅读(239)  评论(0编辑  收藏  举报