模块初识

模块的概念

建立文件

login.py

 

def fun(self):
    print('login success')

再建立一个index.py文件导入login

import login
login.fun()

模块也称库 :python 有标准库和第3方库

a:标准库   standard library
b:开源模块  Open source module
C:自定义模块 Custom module

 

标准库举例:

import os
# cmd_res =os.system("dir")
cmd_res =os.popen("dir").read()
print('-->',cmd_res)
import sys

for i in range(len(sys.path)):
    print(sys.path[i])

pyc文件

解释型语言中间文件

Python数据类型

目录:

1、数字
2、布尔值
3、字符串
4、列表
5、元组
6、字典

 

1、数字

2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
      先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
 
2、布尔值
  真或假
  1 或 0
3、字符串
 
万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
 
name = "万山"
print("I am %s " % name)

 

 PS: 字符串是 %s;整数 %d;浮点数%f

字符串常用功能:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

字符串的各种方法:

# Author zxm


name = "万山"
print("I am %s " % name)

name_list = ['万山', '不止', '心中']
name_list1 =list(['万山', '不止', '心中'])


ages = (11, 22, 33, 44, 55)
ages1 = tuple((11, 22, 33, 44, 55))

person = {"name": "mr.wan", 'age': 18}
person1 = dict({"name": "mr.wan", 'age': 18})

# name = "万山"
name1='nigulasi \t zhaosi'
print(name1.capitalize())
print(name1.count('s'))
print(name1.count('n'))
print(name1.center(20,"-"))
print(name1.endswith("si"))
print(name1.expandtabs(tabsize=30))
print(name1[name.find("si")])
print('ab123'.isalnum())
print('abA'.isalpha())
print('1A'.isdigit())
print('1A'.isdecimal())
print('1A'.isidentifier()) #判断是不是一个合法标识符
print('my name is'.istitle())
print('my name is'.isprintable())
print('my name is '.isupper())
print('name'.join('===='))
print('+'.join(['1','2','3']))
print(name1.ljust(50,'*'))
print(name1.rjust(50,'*'))
print('Nigu'.lower())
print('Nigu'.upper())
print('\nNigu'.lstrip()) #  去左边的空格和回车
print('----')
print('\nNigu')
print('----')

kong =str.maketrans("",'')
print('色色色色 四大皆色'.translate(kong))
print('色色色色 四大皆色'.replace('',''))
print('色色色色 四大皆色'.replace('','',3))
print('色色色色 四大皆色'.rfind(''))
print('1+2+3+4'.split('+'))
print('1+2\n+3+4'.splitlines())

print('Nigu'.swapcase())

输出结果:

I am 万山 
Nigulasi      zhaosi
2
1
-nigulasi      zhaosi--
True
nigulasi                       zhaosi
i
True
True
False
False
False
False
True
False
=name=name=name=
1+2+3
nigulasi      zhaosi*********************************
*********************************nigulasi      zhaosi
nigu
NIGU
Nigu
----

Nigu
----
空空空空 四大皆空
空空空空 四大皆空
空空空色 四大皆色
5
['1', '2', '3', '4']
['1+2', '+3+4']
nIGU

Process finished with exit code 0

 

4、列表
创建列表:
name_list = ['万山', '不止', '心中']
name_list1 =list(['万山', '不止', '心中'])

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含
names =['','','','']
names2 =names.copy()
print(names)
print(names2)
names[1]=''

for i in names:
    print(i)
#切片
#从0开始到最后(-1),步长为2
print(names[0:-1:2])
print(names[1:3])
print(names[0:4])
print(names[0:-1])
print(names[0:])#切边 取出所有值
print(names[-1])
print(names[1])

names.append('')
print(names)
names.insert(2,'') #在索引2的位置插入值 “火”
print(names)
#删除
names.remove('')
print(names)
del names[3] #删除索引3的值
print(names)
names.pop() #删除最后一个
print(names)

#
print(names.index(''))
print(names.count(''))

names.clear()
print(names)

names3 =['','','','','aaa','bac','cab']
names3.reverse()
print(names3) #反转
names2.sort()
print(names3)

names4=[1,2,3,4]
names4.extend(names3)
print(names4)


#以上列表
#以下元组
names6=('万山','')
# names6.append('水')
print(names6)

 

5、元组(不可变列表)
创建元组:
ages = (11, 22, 33, 44, 55)
ages1 = tuple((11, 22, 33, 44, 55))
6、字典(无序)
创建字典:
person = {"name": "mr.wan", 'age': 18}
person1 = dict({"name": "mr.wan", 'age': 18})

常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

一、bytes类型

 

二、三元运算

result = 值1 if 条件 else 值2

如果条件为真:result = 值1
如果条件为假:result = 值2

三、进制

二进制,01

八进制,01234567

十进制,0123456789

十六进制,0123456789ABCDEF  二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1

四、一切皆对象

对于Python,一切事物都是对象,对象基于类创建

 

 

编码

 

msg='千山万水总是情!'
print(msg)
print(msg.encode("utf-8"))
print(msg.encode("GBK"))
print(msg.encode("GB2312"))
print(msg.encode("GB18030"))
print(msg.encode().decode())

 实例项目一:3级菜单

data = {
    '北京':{
        "昌平":{
            "沙河":["oldboy","test"],
            "天通苑":["链家地产","我爱我家"]
        },
        "朝阳":{
            "望京":["奔驰","陌陌"],
            "国贸":{"CICC","HP"},
            "东直门":{"Advent","飞信"},
        },
        "海淀":{},
    },
    '山东':{
        "德州":{},
        "青岛":{},
        "济南":{}
    },
    '广东':{
        "东莞":{},
        "常熟":{},
        "佛山":{},
    },
}
exit_flag = False

while not exit_flag:
    for i in data:
        print(i)
    choice = input("选择进入1>>:")
    if choice in data:
        while not exit_flag:
            for i2 in data[choice]:
                print("\t",i2)
            choice2 = input("选择进入2>>:")
            if choice2 in data[choice]:
                while not 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",i4)
                        choice4 = input("最后一层,按b返回>>:")
                        if choice4 == "b":
                            pass
                        elif choice4 == "q":
                            exit_flag = True
                    if choice3 == "b":
                        break
                    elif choice3 == "q":
                        exit_flag = True
            if choice2 == "b":
                break
            elif choice2 == "q":
                exit_flag = True

  实例项目二:购物车

wages=int(input("请输入你钱包的钱:"))#总钱数建议20元
commodity=(["王老吉",5],["娃哈哈",2],["阔落",3])
dic={}
for x in range(0,commodity.__len__()):
    print("编号:{0} 商品名:{1}  价格:{2}".format(x+1,commodity[x][0],commodity[x][1]))
while True:
    num = int(input("请输入商品编号或者退出(0)"))
    if num > commodity.__len__() or num < 0:  # 不存在商品
        print("商品不存在!")
        continue
    elif  num==0 :#可随时退出,退出时,打印已购买商品和余额
        print("购物车")
        payTotal=0
        for k,v in dic.items():
            print("{0} 单价:{1} 数量{2} 总价{3}".format(k,v[1],v[0],v[1]*v[0]))
            payTotal+=v[1]*v[0]
        print("结账:{0} 元,余额:{1}元".format(payTotal,wages))
        print("购物结束,欢迎下次光临!")
        break
    else:  # 存在商品
        if wages >= commodity[num-1][1]:  # 检测余额是否够,够就直接扣款,不够就提醒
            wages -= commodity[num-1][1]
            if commodity[num-1][0] in dic.keys():
                dic[commodity[num - 1][0]] = [dic[commodity[num - 1][0]][0]+1, commodity[num - 1][1]]
            else:
                dic[commodity[num-1][0]]=[1,commodity[num - 1][1]]
            print("{0}:{1}元,余额:{2}元".format(commodity[num - 1][0], commodity[num - 1][1], wages))
        else:
            print("余额不足!")