第一周的内容,断断续续花了三天,把老师的视频又听了一遍,把老师的上课的实验都做了一遍。

以为自己都会了,其实在做的时候发现自己还是有问题的,要坚持下来。

-----------------------------------------------------------------------------------------------

第二周学习情况

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")
View Code

二、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"
print(a.center(50,"-"))

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"
print(a.istitle())

-->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

---------第二周状态很不好,总结写了很多天才完成,比预计的要晚很多