学习Python基础--------2

 

1.列表和元组操作

列表用[]中括号存储,通过逗号来区分个元素

1 names=[]
2 names = ['zhangsan','lisi','wangwu','zhangmazi','erdan']
print(names)

如果想获取列表的元素,需要按元素下标来获取元素

注意下标是从左到右从0开始计数,所以第一个元素的下标是0,也可以从右到左从-1开始

print(names[0],names[2] #zhangsan wangwu
print(names[-1],names[-2]) #erdan zhamhmazi

获取连续的多个元素,切片

names=['zhiyu','zhangsan','lisi','wangwu','amy','tom']
names[1:4]
#取下标1到4的包括1不包括4 [
'zhangsan','lisi','wangwu']
names[1:-1]
#取1到-1的值不包括-1[
'zhangsan','lisi','wangwu','amy']
names[0:4]
['zhiyu','zhangsan','lisi','wangwu']
names[:4]
['zhiyu','zhangsan','lisi','wangwu'] #如果从头开始取0可以忽略
names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['wangwu','amy','tom']
names[3:-1] #这样-1就不会被包含了
['wangwu','amy']
names[0::2] #后面的2是代表,每隔一个元素,就取一个
['zhiyu','lisi','amy']
names[::2] #和上句效果一样
['zhiyu','lisi','amy']

追加    append方法添加

names=['zhiyu','zhangsan','lisi','wangwu','amy','tom']
names.append('XINDE')
print(names) #['zhiyu','zhangsan','lisi','wangwu','amy','tom','XINDE']

插入    insert(位置,元素)

names.insert(1,'chengronghua' )
names.insert(3,'xinzhiyu')
#['zhiyu','chengronghua','zhangsan','xinzhuyu','lisi','wangwu','amy','tom','XINDE']

修改

names[2]=zhiyu
['zhiyu','chengronghua','zhiyu','xinzhuyu','lisi','wangwu','amy','tom','XINDE']

删除

names.remove("chengronghua")
del names[3]
['zhiyu','zhiyu','xinzhuyu','wangwu','amy','tom','XINDE']
names.pop()#默认不输入下标删除最后一个值 输入下标删除下标的元素

print(names.index('zhiyu')) #查找某元素的下标
print(names[names.index('zhiyu')])  #取出元素

函数count , clear  ,reverse,sort,extend

print(names.count('chengronghua'))#重复元素的计数
#names.clear()#清空列表


#names.reverse()#反转列表的顺序
#names.sort() #排序按照字母顺序  >特殊符号> 数字 > 大写> 小写 按照acsii码规则排序


print(names)
names2=[1,2,3,4]
names.extend(names2)#合并names和names2

拷贝

names = ["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
name2 = names.copy() #浅拷贝  拷贝第一层  下一层只拷贝内存地址
print(name2,)
["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
print(names)
["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
names[2] = '项鹏'
names[3][0] = '苏值'
print(name2)
["4zhangyang","#!guyun","xianpeng",['苏值','jack'],"Chengronghua","xuliangchen"]#没有修改name2[3][0]的值为什么还会变浅拷贝  拷贝第一层  下一层只拷贝内存地址

print(names)
["4zhangyang","#!guyun","项鹏",['苏值','jack'],"Chengronghua","xuliangchen"]

name2 = person[:]#完全切片

name3 = list(person)#工厂函数

#深拷贝
name2 = copy.deepcopy(names) #完全克隆

 

元组

元组和列表差不多 ,它一旦创建便不能修改,所以叫做只读列表用小括号表示

names = ("alex","jack","eric")

它只有两个方法count 和index

练习作业 购物车

# Author:Zhiyu Su

product_list=[
    ("iphone",5800),
    ("mac por", 9800),
    ("bike", 800),
    ("watch", 10600),
    ("alexpython", 120),
    ("coffee", 31)
]
shopping_list=[]
salary = input("input your salay:")
if salary.isdigit():#字符串形式的数字返回为真
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list):#enumerate 取元素的下标

            #print(product_list.index(item),item)
            print(index,item)
        user_choice = input("选择》》》》》》》》")
        if user_choice.isdigit():
            user_choice=int(user_choice)
            if user_choice < len(product_list) and user_choice >=0:
                p_item = product_list[user_choice]
                if p_item[1] <= salary:#买的起
                    shopping_list.append(p_item)
                    print(shopping_list)
                    salary-= p_item[1]
                    print("added%s into shopping cart your crent balance is \033[31;1m%s\033[0m" %(p_item,salary))  #字体红色 \033[31;1m**\033[0m
                else:
                    print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m"%salary)
            else:
                print("不存在[%s]"% user_choice)
        elif user_choice == 'q':
            print("-----------shopping list--------------")
            for p in shopping_list:
                print(p)
            print("your current balance:",salary)
            exit()
        else:
            print("sojdioj")
View Code

字符串操作

# Author:Zhiyu Su

name = "my \tname is {name} and i am {year}"

print(name.capitalize())#首字母大写
print(name.count("a"))  #统计出现的数字
print(name.center(50,"-")) #-----------------my name is alex------------------
print(name.endswith("ex"))  #判断字符串以什么结尾   True
print(name.find("name"))#找出字符的索引
print(name.format(name="alex",year=23))#my     name is alex and i am 23
print(name.format_map({'name':"alex","year":12}))  #以字典形式输出
print("1234".isalnum() )  #包含小数和数字
print('abA'.isalpha())   #包含字母
print('121423'.isdecimal())#是不是十进制
print('12'.isdigit())  #判断是否是整数
print('!A'.isidentifier())#是否是合法的变量名
print('22'.isnumeric())   #只有数字不包含其他字符
print('My Name Is '.istitle())  #首字母大写
print('my name is '.isprintable())#tty file drive file 时是能打印的
print('my name is '.isupper())  #是否是大写
print(','.join(['1','2','3','4']))  #列表换字符
print(name.ljust(50,"*"))  #字符长50不够用星号补
print(name.rjust(50,"-"))
print('Alex'.lower())
print('Alex'.upper())
print('\nAlex'.lstrip())   #从左边去空格或回车符
print('Alex\n'.rstrip())     #
print('\nAlex\n'.strip())     #


p = str.maketrans('abcdef','123456')  #加密
print('alex li'.translate(p))

print('alex li'.replace('l','L',1))  #替换
print('alex li '.rfind('l'))   #找到最后一个字母
print('1+1+2+3 '.split('+'))   #把字符按**当成分割符
print('alex\n li '.splitlines())#识别不同系统的换行
print('Alex Li '.swapcase())   #大写变小写 小写变大写

print('alex li '.title())    #首字母大写
print('alex li '.zfill(50))   #位数不够用0补

字典操作

字典一种key - value 的数据类型,可以通过key的索引找到value key是唯一的不能重复也是无序的

用大括号括起来

info = {58
    'su1':'zhangsan',
    'su2':'lisi',
    'su3':'wangergou'
}
#取值
print(info['su1'])
#修改
info['su1']='张三'

info['su4']='erdan'#如果存在修改不存在创建
#删除del
del info[su1]

info.pop('su1')
info.popitem()#随机删除

print(info.get('su3'))   #查找获取

print('su3' in info) #判断是否存在 返回 True和Flse info.has_key('su3')in py2.x

#update
b={
'su1':'suyu',
1:3,
2:5
}
info.update(b)#相同的合并不同的创建
{'su1':'shuyu','su2':'lisi',1:3,'su3':'wangergou',2:5}
#items
print(info.items())#字典转换成列表
#fromkeys
c=dict.fromkeys([6,7,8],[1,{'name':'alex'},444])   #初始化创建一个字典   多层地址共享
{6:[1,{'name':'alex'},444],7:[1,{'name':'alex'},444],8:[1,{'name':'alex'},444]}

c[7][1]['name']='jackchen'
{6:[1,{'name':'jackchen'},444],7:[1,{'name':'jackchen'},444],8:[1,{'name':'jackchen'},444]}


字典的循环

for i in info:   #高效
    print(i,info[i])


for k,v in info.items():  #将字典转换为列表然后遍历
    print(k,v)

使用字典编写的三级菜单

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

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', i3)
                    choice3 = input("选择进入3》》》")
                    if choice3 in data[choice][choice2]:
                        for i4 in data[choice][choice2][choice3]:
                            print('\t\t',i4)

                        choice4= input("选择4》》》》")
                        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
View Code

 

posted @ 2017-08-23 14:19  那是谁的领地  阅读(195)  评论(0)    收藏  举报