python基础-day04

1、tuple(元组)

    元组被称为只读列表,即数据可以被查询,但不能被修改,列表的切片操作适用于元组。

    元组写在小括号()里,元素之间用逗号隔开。

    虽然tuple的元素不可改变,但他可以包含可变的对象,比如list列表

    构造包含0个或者1个元素的元组比较特殊,所以有一些额外的语法规则。

#__author:"Jiang Hai"
#date:2018/6/11

# 空元素
tup1 = ()
# 一个元素,需要在元素后添加逗号
tup2 = (20,)

print(tup1)
print(tup2)

#错误 尝试修改
# tup2[0] = "10"
# print(tup2)

    作用:

        1.对于一些数据我们不想被修改,可以使用元组。

        2.另外,元组的意义还在于,元组可以在映射(和集合的成员)中当做键使用--而列表则不行,元组作为

           很多内建函数和方法的返回值存在

a = [[1,2,3],4,"JiangHai",(5,6,7),True]
print(a[0][1])
print(a[1])
print(a[2])
print(a[3][1])
print(a[4])

简单小程序 购物车:

#__author:"Jiang Hai"
#date:2018/6/11

# 商品列表
product_list = [
    ('Mac',9000),
    ('Kindle',800),
    ('tesla',90000),
    ('python book',105),
    ('bike',2000),
]

# 购物车
shoppingcar = []

# 你的工资
money = input("please input your money:")

if money.isdigit():
    money = int(money)

    print("=================product list======================")
    for i,v in enumerate(product_list,1):
        print(i,">>>>>>",v)
    print("=================product end======================")

    while True:
        choice = input("选择商品编号:")
        if choice.isdigit():
            choice = int(choice)
            if choice > 0 and choice <= len(product_list):
                p_item = product_list[choice-1]
                if money - p_item[1]  > 0:
                    money = money - p_item[1]
                    shoppingcar.append(p_item)
                else:
                    print("余额不足,还剩:%s"%money)
                    continue
            else:
                print("输入编码错误!")
        elif choice == "quit":
            print(shoppingcar)
            print("余额:%s"%money)
            break
        else:
            print("请继续购买")

2.字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算

,根据计算的结果决定value的存储地址,所以字典是无需存储的,且key必须是可哈希的。可哈希表示key必须

是不可变类型 如:数字、字符、元组。

字典(dictionary)是除了列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序

的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

创建字典:

#__author:"Jiang Hai"
#date:2018/6/

# 创建字典
dic1 = {'name':'alex','age':30,'sex':'male'}
dic2 = dict((('name','alex'),))
print(dic1)
print(dic2)

print(dic1['name'])

#自定的对应操作

#增 setdefault 如果有这个键就不做任何修改,有就添加,并且有返回值
dic1 = {'mane':'alex'}
dic1['age'] = 18
print(dic1)

#setdefault 如果有这个键就不做任何修改,有就添加,并且有返回相应的键值
dic1.setdefault('sex','man')
print(dic1)
dic1.setdefault('age',19) #有就不修改
print(dic1)

#删
dic1 = {'name':'alex','age':30,'sex':'male'}
#删除键值对,并返回该键值对的值
ret = dic1.pop('age')
print(ret)
#删除真个字典
del dic1['name']
print(dic1)
#清空键值对
dic1.clear()
print(dic1)
#随机删除
dic1 = {'name':'alex','age':30,'sex':'male'}
a = dic1.popitem()
print(a,dic1)



#改 update 添加进去,如果键相同,则修改原有键的值
dic4 = {'name':'alex','age':30,'sex':'male'}
dic5 = {'name01':'alex','age01':30,'sex01':'male01'}
dic4.update(dic5)
print(dic4)

#查 通过键去查找
dic1 = {'name':'alex','age':30,'sex':'male'}
print(dic1['name'])
# 查看所有键
dic1.keys()
print(dic1.keys())
print(type(dic1.keys())) #<class 'dict_keys'>数据类型
print(list(dic1.keys())) #<class 'list'>数据类型
# 查看所有有值
dic1.values()
print(type(dic1.values())) #<class 'dict_keys'>数据类型
print(list(dic1.values())) #<class 'list'>数据类型
# items
dic1.items()
print(type(dic1.items())) #<class 'dict_keys'>数据类型
print(list(dic1.items())) #<class 'list'>数据类型

#其他操作方法
# dict.fromkeys()给创建的字典中的每一个键附一个初始的值
dic6 = dict.fromkeys(['host1','host2','host3'],'test')
print(dic6)
dic6['host2'] = 'test01'
print(dic6)
# dict.fromkeys()创建的字典如果键对应的值是列表,修改的时候会修改所有的键相对的值
dic6 = dict.fromkeys(['host1','host2','host3'],['test1','test2'])
print(dic6)
dic6['host2'][1]='test3'
print(dic6)

#排序 根据key排序
dic1 = {'name':'alex','age':'aa','sex':'male'}
print(sorted(dic1))
print(sorted(dic1.items()))
#不能做排序 原因是str和int不能做排序,同类型数据可以排序
print(sorted(dic1.values()))

#循环取值
dic1 = {'name':'alex','age':30,'sex':'male'}
# 效率高
for i in dic1:
    print(i,dic1[i]) 
# 效率低
for i,v in dic1.items():
    print(i,v)

# 字典用于描述对象是最方便的

字符串:

#__author:"Jiang Hai"
#date:2018/6/11

#字符串
print("Let's go")
#重复输出字符串
print("Let's go"*20)
#字符串切片
print("hello"[2:])
# in 成员运算符 -如果字符串中包含制定的字符返回 True
print("e21" in "hello")
print("123" in ["222","111","123"])
# 格式字符串
print("hello,jianghai")
print("hello, %s"%'jianghai')
# 字符串拼接 ,+效率低,%效率低
a = "111"
b = "222"
c = a+b
print(c)
# 字符串拼接join 尽量用这个比较好用和效率高
c = ''.join([a,b])
print(c)

# python中字符串内置方法

st = "Hello kitty"
# 判断出现次数
st.count("l")
print(st.count("l"))
# 这个字符串首字母大写
print(st.capitalize())
# 字符串居中,其他位置用非空字符串填写
print(st.center(50,"-"))
# 以某个字符串结尾
print(st.endswith("y",1,6))
# 以某个字符串开头 常用
print(st.startswith("H"))
# 扩大空格
st2 = "Hello\t kitty"
print(st2.expandtabs(tabsize=10))
# 查找某个字符串出现的位置,显示第一次出现的额位置
print(st.find('t'))
# 格式化输出 区别在与参数不同一个是变量,另一个是字典 (大括号怎么解决)
str3 = "hello kitty {name} is {age}"
print(str3.format(name="JiangHai",age=30))
print(str3.format_map({'name':'Jianghai','age':30}))
#包含字符串和字母
print(st.isalnum())
#判断是否是一个十进制的数
print("b0010".isdecimal())
# 是不是一个整数
print("123123".isdigit())
print("111111".isnumeric())
# 变量名是不是一个非法字符
print("34afds".isidentifier())
# 是否是全小写
print("afdsafAAA".islower())
# 是否是全大写
print("ffffffdDDD".isupper())
#是不是一个空格
print(' '.isspace())
#是不是一个标题 标题每个单词首字母大写
print('My Title'.istitle())
#大写变小写
print("ABCDaa".lower())
#小写变大写
print("afdsfsAD".upper())
# 小写变大写,大写变小写
print("JiangHai".swapcase())
# 实际字符串靠左边,右边用某个字符串补充
print("JiangHai".ljust(50,'*'))
print("JiangHai".rjust(50,'*'))
# 去掉空符去掉前后的格和换行
print("  fsadfdsa afdsf afdsafa afds  ".strip())
print("  fsadfdsa afdsf afdsafa afds  ".lstrip())
print("  fsadfdsa afdsf afdsafa afds  ".rstrip())
#替换
print('My title title'.replace("tle","lesson",1))
# 从右边向做找
print('My title title'.rfind('t'))
# 分割字符串 返回列表
print('My title title'.split(" ",1))
# 从右向左做分割
print('My title title'.rsplit("i",1))
# title 格式
print('My title title'.title())

    

猜你喜欢

转载自blog.csdn.net/jianghai_csdn/article/details/80647273