本篇文章开始接着上一篇的购物车程序,有一些改良,还发现了一些很有意思的代码:
# 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迈进一步,加油!