模块初识(sys,os)
sys模块介绍:
sys.path
功能:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到,如下
print(sys.path) #打印环境变量,当然是已经import sys模块了
sys.argv
功能:在外部向程序内部传递参数,示例如下
print(sys.argv)
print(sys.argv[2])
os模块介绍:
os.system(“dir”) 功能:打印当前系统文件目录,只执行不保存运行结果
cmd_res = os.popen("dir").read() #保存执行结果
os.mkdir("new_dir") #当前目录下创建一个目录
数据类型介绍:
整型、浮点数、字符串、布尔值、列表、元组、字典等。
列表的操作:
names = ["zhangle","weiliija","changxiying","zhangxing","yeqin","weichuanshou"] #创建列表
print(names[0],names[4]) #取出指定位置的元素
print(names[0:3]) #取出元素,下标从0到2,不包括尾部元素,切片
print(names[-3:-1]) #从最后一个元素开始往左取数,同样不包括尾数
names.append("wangshuaiqi") #在列表最后面添加数据
names.insert(1,"yeqin") #在1位置插入“lizhao”
names[4] = "yeyeye" #在指定位置赋值,替换以前的值
names.remove("yeyeye") #直接删除名字
del names[4] #删除给定位置元素
names.pop(3) #等同于del
names.reverse() #反转列表
names.sort() #列表元素整理
print(names.count("yeqin")) #计算指定名字个数
names2 = ["haha","hehe","dada"]
names.extend(names2) #把names2添加到names
name2 = names.copy() #复制names到name2
name2 = names[:] #复制方法二
name2 = list(names) #复制方法三
注意:元组(tuple)和列表差不多,也是存一组数据,但是元组一旦创建,不可修改,被称为只读列表。
练习1
要求:1、启动程序后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后判断用户余额是否足够,够就直接购买,不够就提醒
4、可随时退出,退出时打印已购商品和余额
代码如下:
product_list = [('Iphone',5800),('MAc Pro',9800),('Bike',800),('watch',10600),('Alex Python',120)] shopping_list = [] salary = input("please input your salary:") if salary.isdigit(): salary = int(salary) while True: for index,item in enumerate(product_list): 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) salary -= p_item[1] print("add %s into shopping cart,your current balance is \033[31;1m%s\033[0m"%(p_item,salary)) else: print("你的余额只剩\033[32;1m%s\033[0m,买不起该商品" %salary) else: print("product code [%s] is not exist" %user_choice) elif user_choice == 'q': print("-----shopping list-----") for p in shopping_list: print(p) print("your current balance is %s" %salary) exit() else: print("invalid option!")
字符串操作:
name = "my \tname is {name} and i am {age} year old" #写一段字符串
print(name.capitalize()) #首字母大写,其他都小写
print(name.count("a"))
print(name.center(50,"-")) #字符串居中,两边用-补齐
print(name.endswith("ex")) #判断是否一“ex”结束
print(name.expandtabs(tabsize=30)) #tabsize - 这指定了替换字符“\t”要替换的字符数。
print(name[name.find("name"):])
print(name.format(name="yeqin",age="22"))
print(name.format_map({'name':'yeqin','age':22}))
print('ab123'.isalnum()) #是否全是字母和数字,并至少有一个字符
print('abH'.isalpha())
print('1A'.isdecimal())
print('a 1a'.isidentifier()) #判断是否是一个合法的标识符
print('my name is yeqin'.istitle())
print('My name is yeqin'.isupper())
print('+'.join(['1','2','3','4']))
print(name.ljust(50,'*')) #输出50个字符,左对齐,不足部分用*补齐
print('Alex\n'.rstrip) #移除右边空格
p = str.maketrans("abcdefli",'123$&456')
print('alex li'.translate(p))
print('alex li'.replace('l','L',1))
print('alex li'.rfind('l'))
print('1+2+3+4'.split('\n'))
print('1+2\n+3+4'.splitlines())
print('Alex Li'.swapcase()) #大小写互换
print('lex li'.zfill(50))
字典的操作:
info = {
'stu1101': "zhangle",
'stu1102': "weilijia",
'stu1103': "changziying",
} #创建字典
print(info.get('stu1104')) #查找数据
print('stu1104' in info) #判断某个值是否在字典中
info["stu1101"] = "张了" #改变字典中的值
info["stu1104"] = "yeqin" #在字典中添加数据
#删除操作
# del info["stu1104"]
info.pop("stu1104")
for i in info: #循环,推荐使用
print(i,info[i])
for k,v in info.items():
print(k,v)
b = {
'stu1101':"alex",
1:3,
2:5,
}
info.update(b) #合并两个字典
注意:字典中元素是无序的
练习2
要求:三级列表
data = { '北京':{ "昌平":{ "沙河": ["oldboy", "test"], "天通苑": ["链家地产", "我爱我家"] }, "朝阳":{ "望京":["奔驰","陌陌"], "国贸":["CICC","HP"], "东直门":["Advent","飞信"], }, "海定": {}, }, '山东':{ "德州":{}, "青岛":{}, "济南":{} }, '广东':{ "东莞":{}, "常熟":{}, "佛山":{}, }, } exit_flag = False while not exit_flag: for i in data: print(i) choice1 = input("选择进入1>>") if choice1 in data: while not exit_flag: for i2 in data[choice1]: print(i2) choice2 = input("选择进入2>>") if choice2 in data[choice1]: while not exit_flag: for i3 in data[choice1][choice2]: print(i3) choice3 = input("选择进入3>>") if choice3 in data[choice1][choice2]: for i4 in data[choice1][choice2][choice3]: print(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