月薪两万五python之路 DAY(四)

本篇文章开始接着上一篇的购物车程序,有一些改良,还发现了一些很有意思的代码:

# encoding: utf-8
'''
@author: ccq
@file: shopping.py
@time: 2019/5/22 21:13
'''
# 购物车2
commodity_list = [
    ('apple', 10),
    ('banana', 20),
    ('cat', 400),
    ('dog', 200),
    ('flat', 50),
]
shoppinglist = []
salary = input("请输入您的工资:")
if salary.isdigit():
    salary = int(salary)
    while True:
        # enumerate可以输出下标
        for index, item in enumerate(commodity_list):
            print(index + 1, item)
        print("请输入商品编号:\n输入q退出...")
        choice = input()
        print()
        # 如果输入q退出
        if choice == "q":
            break
        else:
            # isidgit方法判断是不是数字并返回true或者false
            if choice.isdigit():
                choice = int(choice) - 1
                # 判断正确的商品编号
                if choice < len(commodity_list) + 1 and choice > 0:
                    bitem = commodity_list[choice]
                    # 如果买的起
                    if bitem[1] <= salary:
                        salary -= bitem[1]
                        shoppinglist.append(bitem)
                        # \033[31;1m xxxx %s\033[0m 添加字体颜色格式
                        print("已经购买了%s商品,您当前的余额为\033[31;1m%s\033[0m." % (bitem, salary))
                    else:
                        # \033[41;1m xxxx %s\033[0m 添加背景色格式
                        print("\033[41;1m您的余额不足,余额为%s\033[0m" % (salary))

            else:
                print("您输入的商品编号不合法!")
                break

#也许有一点小bug?大家发现的话欢迎留言。

#讲一下改动的地方:直接采用了嵌套列表,因为发现了一个enumerate方法,可以直接输出下标。

#提前使用了isdigit方法来判断输入的是不是数字。

# \033[31;1m xxxx %s\033[0m 添加字体颜色格式

# \033[41;1m xxxx %s\033[0m 添加背景颜色格式

==========================================分割线=================================================

第一个程序

字符串常用操作-CharaterStringOperations

# encoding: utf-8
'''
@author: ccq
@file: CharacterStringOperations.py
@time: 2019/5/24 10:52
'''
# 字符串常用操作
name = "my name is ccq"

# 首字母大写
print(name.capitalize())

# 字母计数
print(name.count("c"))

# 居中打印,并使用-补全50个字符
print(name.center(50, "-"))

# 判断是否以q结尾
print(name.endswith("q"))

# 将制表符转换成20个空格
name2 = "cc\tq"
print(name2.expandtabs(tabsize=20))

# 寻找字符索引
print(name.find("c"))
# 运用find方法,进行字符串切片
print(name[name.find("name"):])

# format格式化方法
name3 = "my name is {name} and I am {age} years old."
print(name3.format(name='ccq', age=21))

# format_mup方法格式化(针对字典,较少使用)
print(name3.format_map({'name': 'ccq', 'age': 21}))

# 判断是不是英文和阿拉伯数字
name4 = "Abc123"
print(name4.isalnum(), name.isalnum())

# 判断纯英文字符
name5 = 'ABcd'
print(name4.isalpha(), name5.isalpha())

# 判断字符串是否只包含十进制
name6 = "10"
print(name6.isdecimal(), name4.isdecimal())

# 判断是不是纯数字
print(name4.isdigit(), name6.isdigit())
print(name4.isnumeric(), name6.isnumeric())

# 判断是不是合法的变量名
print('你好'.isidentifier(), '_wh at'.isidentifier())

# 判断是不是标题
print('My Name Is'.istitle(), 'my name is'.istitle())

# 判断是不是全是大写
print('MY'.isupper(), 'My'.isupper())

# 连接任意数量的字符串
name8 = 'abc'
name9 = '123456'
print(name8.join(name9))
print('+'.join(name8))

# 用+号补全字符串,总长度为50
print(name.ljust(50, '+'))
# 用-号补全字符串,总长度为50
print(name.rjust(50, '-'))

# 大写变小写
print('CCQ'.lower())
# 小写变大写
print('ccq'.upper())

# 去除两端空格和回车
print('\n c c q \n'.strip())
# 去除左端空格和回车
print('\n c c q \n'.lstrip())
# 去除右端空格和回车
print('\n c c q \n'.rstrip())

# 创建字符映射转换表
name0 = str.maketrans("abcdef", "123456")
print("a b c d e f".translate(name0), "a b c d e f")

# 替换
print("ccq".replace('c', 'C', 1))

# 找最右边的c的下标
print("ccq and c".rfind("c"))

# 按照空格把字符串变成列表
print('ccq and cm'.split(" "))

# 按照换行把字符串变成列表
print('ccq\n and \ncm'.splitlines())

# 大小写转换
print('CCq aNd cM'.swapcase())

# 首字母大写
print("ccq and cm".title())

#啥也不多说,背就是了,常用的其实也不多。多复习几遍,用着用着就会了!

==========================================分割线=================================================

第二个程序

字典操作-DictOperations

# encoding: utf-8
'''
@author: ccq
@file: DictOperations.py
@time: 2019/5/24 15:30
'''
# 字典操作
dict1 = {
    'stu01': "Xiao Ming",
    'stu02': "Xiao Hong",
    'stu03': "Xiao Fang",
}
# 打印字典
print(dict1)

# 打印对应索引的值
print(dict1["stu01"])

# 修改对应索引的值
dict1["stu01"] = "小名"
print(dict1["stu01"])

# 添加
dict1["stu04"] = "小兰"
print(dict1)

# 删除
del dict1["stu03"]
print(dict1)

# 删除第二种方法
dict1.pop("stu04")
print(dict1)

# 随机删除(因为字典无序)
dict1.popitem()
print(dict1)

dict2 = {
    'stu01': "Xiao Ming",
    'stu02': "Xiao Hong",
    'stu03': "Xiao Fang",
}

# 查找
print(dict2.get("stu04"))

# 判断字典里有没有该元素
print('stu04' in dict2)

#字典操作,记忆咯,不多说。

==========================================分割线=================================================

第三个程序

字典嵌套-DictNesting

# encoding: utf-8
'''
@author: ccq
@file: DictNesting.py
@time: 2019/5/24 15:52
'''
# 字典嵌套
dict1 = {
    "一年级": {
        "一班": ["小红", "小黄"],
        "二班": ["小蓝", "小橙"],
    },
    "二年级": {
        "一班": ["小绿", "小紫"],
        "二班": ["小白", "小黑"],
    },
}

# 修改
dict1["二年级"]["二班"][1] = "小青"
print(dict1)

# 打印去除掉key的
print(dict1.values())

# 打印所有的key
print(dict1.keys())

# 添加/修改
# 先到字典中找"三年级",如果有就取出,如果没有就添加
dict1.setdefault("三年级", {"一班": ["小菜"]})
print(dict1)
dict1.setdefault("三年级", {"二班": ["大菜"]})

# 合并更新
dict2 = {'stu01': "Xiao Ming",
         'stu02': "Xiao Hong",
         'stu03': "Xiao Fang",
         }
dict3 = {'stu01': "Sha Gou",
         1: 3,
         21: 35,
         }
dict2.update(dict3)
print(dict2)

# 字典转成列表
print(dict1.items())

# 初始化一个新的字典(建议不用,类似浅拷贝的用法,只能有一层)
c = dict.fromkeys([6, 7, 8], "python")
print(c)

# 循环字典
# 循环打印key
for i in dict1:
    print(i)
# 循环打印key和value(高效很多)
for i in dict1:
    print(i, dict1[i])

# 循环打印key和value(低效,因为items方法要把字典转成列表,因此建议使用上面的)
for k, v in dict1.items():
    print(k, v)

#记录一下。

==========================================分割线=================================================

又向月薪25k迈进一步,加油!

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值