第一周的内容,断断续续花了三天,把老师的视频又听了一遍,把老师的上课的实验都做了一遍。
以为自己都会了,其实在做的时候发现自己还是有问题的,要坚持下来。
-----------------------------------------------------------------------------------------------
第二周学习情况
1.Python模块
2.Pythin数据类型
3.数学运算
4.列表的使用
5.元祖和列表
6.字符串常用操作
7.字典使用
8.购物车实例
9.路径三级菜单实例
一、Python模块
在这里学习的模块内容比较少,模块三种途径得到,分别是自带、第三方、自己写。
自带--标准库,不需要安装直接可以导入的。第三方库需要下载安装才能用。
os模块,寻找路径,先在当前路径去寻找,然后寻找以下路径
['C:\\Users\\lenovo\\PycharmProjects\\untitled2', 'C:\\Users\\lenovo\\PycharmProjects\\untitled2', 'C:\\Python35\\python35.zip', 'C:\\Python35\\DLLs', 'C:\\Python35\\lib', 'C:\\Python35', 'C:\\Python35\\lib\\site-packages']
标准库文件寻找的路径,一般标准库在C:\Python35\\ib\,第三方库在C:\\Python35\\lib\\site-packages
1 import os 2 #os.system("dir") 3 #cmd_res = os.system("dir")#执行命令,不报错结果 4 #cmd_res = os.popen("dir") 5 cmd_res = os.popen("dir").read()#将执行的结果取出来打印 6 print (cmd_res) 7 os.mkdir("new_dir")#在本目录下创建一个名为“new_dir”的文件目录
导入模块三种方式:
1.import 模块名
2.from模块名 import函数名
3.import模块名 as新名字
当导入的模块路径报错,有两种方式修改,一、在全局变量中添加相对的路径。二、复制到默认的全局变量的文件夹下。
例如:
1 os.path.append("*:\\Python3*\\lib\\site-packages")
二、Python数据类型
1.数字:整型(int),长整型(long), 浮点型(float),复数型(complex)
整数:
32位系统中,存的数为2的32次方;64位系统中,存的数为2的64次方。
-------在python v2*版本中超过后会自动转换-------
typc(2**32)
>>><type 'int'>
typc(2**64)
>>><type 'long'>
-------在python v3*版本只会有int-------
typc(2**32)
>>><type 'int'>
typc(2**64)
>>><type 'int'>
浮点数
52.4E4 #52.4*10的4次方
>>>524000.0
2.布尔值:真或假 0或1
1 a=0 2 if a: 3 print("a") 4 >>> 5 ----------------- 6 a=1 7 if a : 8 print("a") 9 >>>a
3.字符串:“……” / '……'
三、数学运算
1.算数运算:a=10;b=20
符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
2.比较运算:a=10;b=20
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。 这分别与特殊的变量True和False等价。 注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
3.赋值运算:a=10;b=20
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
4.逻辑运算:a=10;b=20
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
5.……
更多学习可以查看http://www.runoob.com/python/python-operators.html(注意,此网页数学运算是Python v2.*版本的)
四、列表使用
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
定义列表
1 names = ["sugod00",'sugod01','sugod02']
通过下标访问列表中的元素,下标从0开始计数。
print(names[0]) print(names[1]) print(names[-1]) print(names[-2]) ----------------------- >>>sugod00 >>>sugod01 >>>sugod02 >>>sugod01
1.列表切片取多个元素
name = [*:*] #顾头不顾尾
name = [::2] #隔一个取值
1 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04'] 2 print(names[1:4]) #取下标1值下标4之间的数字,包括下标1的元素但不包括下标4的元素 3 >>>['sugod01', 'sugod02', 'sugod03'] 4 #注意以下的输出结果,一个是取元素,一个切片后的列表 5 print(names[0]) 6 >>>sugod00 7 print(names[0:1]) 8 >>>['sugod00'] 9 print(names[:1]) 10 >>>['sugod00'] #如果是从头开始取,0可以忽略,跟上句效果一样 11 print(names[3:]) 12 >>>['sugod03','sugod04'] #如果想取最后一个,必须不能写-1,只能这么写 13 print(names[3:-1]) 14 >>>['sugod03'] #不包含-1的元素 15 print(names[1::2]) 16 >>>['sugod01', 'sugod03'] #第三各2表示步长,即隔一个补一个 17 print(names[::2]) #从头取到尾,隔一个取一个 18 >>>['sugod00', 'sugod02', 'sugod04']
2.增、删、改、插
1 #增加 .append 2 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04'] 3 names.append("sugod05") 4 print(names) 5 >>> 6 ['sugod00', 'sugod01', 'sugod02', 'sugod03', 'sugod04', 'sugod05']#添加在列表的最后
#删除del(指定下标)/.remove(指定元素)/.pop(删除列表中最后一位) names = ["sugod00",'sugod01','sugod02','sugod03','sugod04','sugod05'] del names[2] print(names) >>>['sugod00', 'sugod01', 'sugod03', 'sugod04', 'sugod05'] --------------------------------------------------------------------------------- names = ["sugod00",'sugod01','sugod02','sugod03','sugod04','sugod05'] names.remove('sugod01') >>>['sugod00', 'sugod02', 'sugod03', 'sugod04', 'sugod05'] --------------------------------------------------------------------------------- names = ["sugod00",'sugod01','sugod02','sugod03','sugod04','sugod05'] names.pop() >>>['sugod00','sugod01', 'sugod02', 'sugod03', 'sugod04']
1 #改,通过下标进行修改 2 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04','sugod05'] 3 names[3] = 'susu' 4 print(names) 5 ['sugod00', 'sugod01', 'sugod02', 'susu', 'sugod04', 'sugod05']
# 根据下标位置插入
1 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04','sugod05'] 2 names.insert(2,'susu') #在下标2的位置上插入‘susu’元素 3 print(names) 4 >>>['sugod00', 'sugod01', 'susu', 'sugod02', 'sugod03', 'sugod04', 'sugod05']
3.扩,复,统,序、取下标
1 #扩展,两个列表合并,.extend 2 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04'] 3 name2 = [1,2,3] 4 names.extend(name2) 5 print(names) 6 >>>['sugod00', 'sugod01', 'sugod02', 'sugod03', 'sugod04', 1, 2, 3]
1 #复制,.cpoy 2 names = ["sugod00",'sugod01','sugod02','sugod03','sugod04'] 3 name2 = names.copy() 4 print(name2)
1 #统计,.count 2 names = ["sugod00",'sugod01','sugod00','sugod03','sugod04'] 3 print(names.count("sugod00")) 4 >>>2
1 #排序,.sort按字符顺序排序(注意不同类型的元素不能在一起排序,例如数字和字符),数字字符(注意使用“/‘)在前,英文在后。大写在前小写在后。.reverse反转 2 names = ["sugod00",'augod01','Dugod00','fugod03','rugod04','1','3','5'] 3 names.sort() 4 print(names) 5 names.reverse() 6 print(names) 7 >>>['1', '3', '5', 'Dugod00', 'augod01', 'fugod03', 'rugod04', 'sugod00']
8 >>>['sugod00', 'rugod04', 'fugod03', 'augod01', 'Dugod00', '5', '3', '1']
1 #取列表下标,.index 2 names = ["sugod00",'augod01','Dugod00','fugod03','rugod04','1','3','5'] 3 print(names.index('augod01')) 4 >>>1
五、元祖的使用
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
它只有2个方法,一个是count,一个是index。统计和取下标
names = ("sugod01","sugod02","sugod03")
六、字符串常用操作
字符串对象是不可改变的,也就是说在创建一个字符串后,你不能把这个字符中的某一部分改变。
任何上面的函数改变了字符串后,都会返回一个新的字符串,原字串并没有变。
这部分内容很多,我很项找到一个表格能把常用的函数进行一一对应的说明,但是没有找到(肯定是有的只是我没找到),如是我自己编写了下面的表格。
函数 | 方法及描述 | 语法 |
capitalize() | 回首字母大写的副本,不改变原来的值 | x='hello,world' x.capitalize() -->'Hello,world' |
count() | 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。空格也是字符 | x='hel lo love' x.count('l',0,4) #0到4下标位置 -->1 |
center(width,fillchar) | 回一个指定的宽度 width 居中的字符串,fillchar为填充的字符,默认为空格。 | a = "dd" |
endwith() | 检查字符串是否存在,指定检查范围,如果是,返回 True,否则返回 False. | a.endwith(‘d’) |
find() | 检测字符串中是否包含子字符串 ,如果指定范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。(没找到就返回-1) | a.find(‘a’) |
format() | 和%格式化功能一样,基本语法是通过 {} 和:来代替以前的%。format函数可以接受不限个参数,位置可以不按顺序。 | msg='Nname:{},age:{},sex:{}' print(msg.format('tom',18,'male')) -->Nname:tom,age:18,sex:male |
format_map() | 字典 | msg = "my name is {name}, and age is {age}" msg.format(age=25,name="sugod") msg.format_map({'name':'sugod','age':25}) |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False | salary = input(“输入会员卡余额:”) if salary.isdigit): salary = int(salary) |
istitle | 如果字符串是标题化的(单词首字母大写)则返回 True,否则返回 False | a = "Dd Rr" -->True |
join() | 以指定字符串作为分隔符,将括号中所有的元素(的字符串表示)合并为一个新的字符串 | str = "-" seq = ("a", "b", "c") # 字符串序列print (str.join( seq )) --------------------------------------- print (“-”.join(seq)) |
ljust()/rjust() | 指定字符补齐 |
|
lower()/upper() | 大/小写 |
这个表我花了几天时间去想怎么写,内容实在太多,多到我无法和没信心去完成掉,所以我觉得应该写到这!
以后遇到不懂的就网上去查。
七、字典使用
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
注意:
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
字典是无序的,无下标。按KEY值来记录
1 name = {'n01':'sugod01','n02':'sugod02','n03':'sugod03',} 2 print (name) 3 print (name['n01']) 4 -->{'n01': 'sugod01', 'n02': 'sugod02', 'n03': 'sugod03'} 5 -->sugod01
1.增,改,删
1 name = {'n01':'sugod01','n02':'sugod02','n03':'sugod03',} 2 print (name) 3 -->{'n02': 'sugod02', 'n03': 'sugod03', 'n01': 'sugod01'} 4 5 name['n01'] = 'sugod00' #改 6 print (name) 7 -->{'n02': 'sugod02', 'n03': 'sugod03', 'n01': 'sugod00'} 8 9 name['n04'] = 'sugod04' #增加 10 print (name) 11 -->{'n02': 'sugod02', 'n03': 'sugod03', 'n04': 'sugod04', 'n01': 'sugod00'} 12 13 del name['n01'] #删除 14 print (name) 15 -->{'n02': 'sugod02', 'n03': 'sugod03', 'n04': 'sugod04'} 16 17 name.pop('n04') #删除 18 print (name) 19 -->{'n02': 'sugod02', 'n03': 'sugod03'} 20 21 name = {'n01':'sugod01','n02':'sugod02','n03':'sugod03',} 22 name.popitem()#随机删除 23 print(name) 24 -->{'n03': 'sugod03', 'n01': 'sugod01'}
2.查找
1 name = {'n01':'sugod01','n02':'sugod02','n03':'sugod03',} 2 print(name.get('n01')) 3 -->sugod01 4 print(name.get('n04')) 5 -->None 6 7 print('n03' in name) 8 -->True 9 print('n04' in name) 10 -->False
3.多级字典嵌套
1 running_shoes = { 2 "欧美":{ 3 "saucony": ["FREEDOM IOS","顶级专业跑鞋"], 4 "Adidas": ["ENERGY BOOST 3","顶级专业跑鞋"], 5 }, 6 "日韩":{ 7 "asics":["GEL-KAYANO 24","顶级专业跑鞋"], 8 "MIZUNO":["WAVE PROPHECY 5","顶级专业跑鞋"], 9 }, 10 "中国":{ 11 "李宁":["超轻十四代","专业跑鞋"], 12 }, 13 } 14 15 running_shoes["中国"]["李宁"][1] += ",超薄透气" 16 print(running_shoes["中国"]["李宁"]) 17 -->['超轻十四代', '专业跑鞋,超薄透气']
4.其他
values/keys只取values值或者KEY值
1 shoes ={'s01':'111','s02':'222'} 2 print(shoes.values()) 3 print(shoes.keys()) 4 -->dict_values(['111', '222']) 5 -->dict_keys(['s01', 's02'])
update合并/items字典转列表
八、购物车实例
1 product_list = [ 2 ('kayano 22',900), 3 ('kayano 23',1000), 4 ('kayano 24',1200), 5 ('noosa ff',700), 6 ('nimbus 19',1100), 7 ] 8 shopping_list = [] 9 salary = input("输入会员卡余额:") 10 if salary.isdigit (): 11 salary = int(salary) 12 while True: 13 # for item in product_list: 14 #print(product_list.index(item),item) 15 for index,item in enumerate(product_list): 16 print(index,item) 17 user_choice = input('请选择购买的商品序号:') 18 if user_choice.isdigit(): 19 user_choice = int(user_choice) 20 if user_choice < len(product_list) and user_choice >= 0: 21 p_item = product_list[user_choice] 22 if p_item[1] <= salary: 23 shopping_list.append(p_item) 24 salary -= p_item[1] 25 print("已舔加%s到购物车中,您的余额还剩\033[31;1m%s\033[0m" %(p_item,salary)) 26 else: 27 print('\033[41;1m您的余额不足,剩余[%s]\033[0m' %salary) 28 else: 29 print('您选择的[%s]号商品不存在' % user_choice) 30 elif user_choice == 'q': 31 print('-------购物清单-------') 32 for p in shopping_list : 33 print(p) 34 print('您会员卡余额:',salary) 35 exit() 36 else: 37 print('错误选项,请重新选择') 38 else: 39 print('输入金额有误,退出')
九、路径三级菜单实例
1 add = { 2 '湖北':{ 3 '武汉':{ 4 '洪山区':['珞狮路','超级堵'], 5 '东湖高新区':['光谷大道','超级堵'], 6 }, 7 '黄石':{ 8 '铁山区':['1','1'], 9 '西塞山区':['2','2'], 10 }, 11 }, 12 '湖南':{ 13 14 }, 15 '河南':{ 16 17 }, 18 } 19 exit_flag = False 20 while not exit_flag: 21 for i in add: 22 print(i) 23 choice = input("选择查看省>>:") 24 if choice in add: 25 while not exit_flag: 26 for i2 in add[choice]: 27 print("\t",i2) 28 choice2 = input("选择查看地市>>:") 29 if choice2 in add[choice]: 30 while not exit_flag: 31 for i3 in add[choice][choice2]: 32 print("\t\t",i3) 33 choice3 = input("选择查看的区>>:") 34 if choice3 in add[choice][choice2]: 35 for i4 in add[choice][choice2][choice3]: 36 print ("\t\t\t",i4) 37 choice4 = input("按b返回上一层,按q退出>>:") 38 if choice4 == "b": 39 pass 40 elif choice4 == "q": 41 exit_flag = True 42 if choice3 == "b": 43 break 44 elif choice3 == "q": 45 exit_flag = True 46 if choice2 == "b": 47 break 48 elif choice2 == "q": 49 exit_flag = True 50 elif choice == "q": 51 exit_flag = True
---------第二周状态很不好,总结写了很多天才完成,比预计的要晚很多