python学习暂时笔记-20180205

一、数据类型-数值、布尔、字符串学习

1.int(整型)

python3中已经不再区分整数和长整数;

2.float(浮点型)

浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号,浮点数不全是小数;

二、for循环

1.基本语法:

for i in range(5):

range(5)代表[0,1,2,3,4]

如果我们要输出1~101之间的奇数,代码如下:

1 for i in range(1,101):
2     if i % 2 == 1:
3         print('loop:',i)

也用下面代码实现,更加简练:

1 for i in range(1,101,2):
2     print('loop:',i)

range(1,101,2)第三个参数代表步长,从1开始,每次+2

简单的for循环使用例子,判断用户名、密码输入是否正确,允许尝试三次,具体代码如下:

 1 _user = 'swc'
 2 _password = 'abc123'
 3 
 4 for i in range(3):
 5     username = input('Username:')
 6     password = input('Password:')
 7 
 8     if username == _user and password == _password:
 9         print('Welcome to here....')
10         break
11     else:
12         print('Please try username or password again!')
13 print('还登录,打死你,你个蠢蛋!')

但此程序现在有个问题,不管你登录失败还是成功,都会最后输出“还登录,打死你,你个蠢蛋!”

为了解决这个问题,我们引入一个变量,用来判断是不是要输出这句话,具体代码如下:

 1 _user = 'swc'
 2 _password = 'abc123'
 3 
 4 passed_authentication = False #此为定义的变量,默认是false
 5 for i in range(3):
 6     username = input('Username:')
 7     password = input('Password:')
 8 
 9     if username == _user and password == _password:
10         print('Welcome to here....')
11         passed_authentication = True #登录成功后将此变量赋值为真
12         break
13     else:
14         print('Please try username or password again!')
15 #如果登录成功现在变量为True,但if后面是‘真’才执行下面print,故我们用not取反
16 if not passed_authentication:
17     print('还登录,打死你,你个蠢蛋!')

以上代码还有一个更简便的实现方法,具体代码如下:

 1 _user = 'swc'
 2 _password = 'abc123'
 3 
 4 for i in range(3):
 5     username = input('Username:')
 6     password = input('Password:')
 7 
 8     if username == _user and password == _password:
 9         print('Welcome to here....')
10         break
11     else:
12         print('Please try username or password again!')
13 else:
14     print('还登录,打死你,你个蠢蛋!')

此程序中如果for循环循环完毕而未被打断,便执行else:语句,如果通过break后,就不再执行else:后面语句,while循环同for循环一个用法

 三、列表

1 s = ['a','g','f','e','y','m']
2 print(s[1:]) 

输出结果为:['g', 'f', 'e', 'y', 'm'],:后面什么都不加,取值取到最后,包含最后一个值

1 s = ['a','g','f','e','y','m']
2 print(s[1:4])

输出结果为:['g', 'f', 'e'],输出列表中1号位置到4-1号位置的元素,输出的是列表中1号位置到n-1号位置的元素

1 s = ['a','g','f','e','y','m']
2 print(s[1:-1])

输出结果为:['g', 'f', 'e', 'y'],输出到倒数第二个值;

1 s = ['a','g','f','e','y','m']
2 print(s[1::2])

输出结果为:['g', 'e', 'm'],第三个参数为步长,位号+2

四、list操作

1.添加append、insert

append是添加到list的末尾,而insert是插入到list的指定位置

1 s = ['a','g','f','e','y','m']
2 s.append('n')
3 print(s)

输出结果:['a', 'g', 'f', 'e', 'y', 'm', 'n']

1 s = ['a','g','f','e','y','m']
2 s.insert(3,'n')
3 print(s)

输出结果:['a', 'g', 'f', 'n', 'e', 'y', 'm'],将‘n’插入到3号位置

2.更改list中的元素

1 s = ['a','g','f','e','y','m']
2 s[1:3]=['swc','zxl']
3 print(s)

输出结果:['a', 'swc', 'zxl', 'e', 'y', 'm']

3.删除list中的元素:remove、pop、del

1 s = ['a','g','f','e','y','m','m']
2 s.remove('m')
3 s.remove('m')
4 print(s)

remove后面直接跟list中你要删除的元素,需要两次remove('m')才能全部删除,而不是一次,默认是从左往右删除搜索到的第一个元素

1 s = ['a','g','f','e','y','j']
2 receive = s.pop(3)
3 print(s)
4 print(receive)

输出结果为:

['a', 'g', 'f', 'y', 'j']
e

pop是运用索引将list中的元素删除后,并返回删除的值

1 s = ['a','g','f','e','y','j']
2 del s[4]
3 print(s)

输出结果为:['a', 'g', 'f', 'e', 'j']

4.统计list中某元素的数量:count

1 s = ['a','e','f','e','e','j']
2 n = s.count('e')
3 print(n)

输出结果为:3

5.extend方法

1 a = [1,2,3,4]
2 b = [7,8,9]
3 a.extend(b)
4 print(a)
5 print(b)

输出结果为:

1 [1, 2, 3, 4, 7, 8, 9]
2 [7, 8, 9]

6.index方法

用于查找某个元素在list中的位号

1 a = ['a','p','f','e','m','j']
2 b = a.index('m')
3 print(b)

输出结果为:4

7.reverse方法,倒序排列

1 a = [1,2,3,4,5,6,7]
2 a.reverse()
3 print(a)

输出结果:[7, 6, 5, 4, 3, 2, 1]

8.sort方法,升序排列

1 a = [5,4,7,8,2,4,0]
2 a.sort()
3 print(a)

输出结果:[0, 2, 4, 4, 5, 7, 8]

五、作业——购物车程序

1.自己完成的代码:

 1 #__author__:Administrator
 2 #DATE:2018/2/6
 3 
 4 salary = float(input('Please input your salary:'))
 5 msg = """
 6 ------info of shoping------
 7 1.  iphone6s    5800
 8 2.  mac book    9000
 9 3.  coffee      32
10 4.  python book 80
11 5.  bicyle      1500
12 """
13 print(msg)
14 shopping_list = []
15 user_choose = input('>>>:')
16 while user_choose != 'q':
17     if user_choose == '1':
18         balance = salary - 5800
19         if balance >=0:
20             print('已加入iphone6s到你购物车,当前余额:',balance)
21             salary = balance
22             shopping_list.append('iphone6s')
23         else:
24             print('您的余额不足,还差:%f'% balance)
25 
26     elif user_choose == '2':
27         balance = salary - 9000
28         if balance >=0:
29             print('已加入mac book到你购物车,当前余额:',balance)
30             salary = balance
31             shopping_list.append('mac book')
32         else:
33             print('您的余额不足,还差:%f'% balance)
34 
35     elif user_choose == '3':
36         balance = salary - 32
37         if balance >=0:
38             print('已加入coffee到你购物车,当前余额:',balance)
39             salary = balance
40             shopping_list.append('coffee')
41         else:
42             print('您的余额不足,还差:%f'% balance)
43 
44     elif user_choose == '4':
45         balance = salary - 80
46         if balance >=0:
47             print('已加入python book到你购物车,当前余额:',balance)
48             salary = balance
49             shopping_list.append('python book')
50         else:
51             print('您的余额不足,还差:%f'% balance)
52 
53     elif user_choose == '5':
54         balance = salary - 1500
55         if balance >=0:
56             print('已加入bicyle到你购物车,当前余额:',balance)
57             salary = balance
58             shopping_list.append('bicyle')
59         else:
60             print('您的余额不足,还差:%f'% balance)
61     user_choose = input('>>>:')
62 if user_choose == 'q':
63     print('-----您已购买以下商品-----')
64     for i in shopping_list:
65         print(shopping_list.index(i)+1,i)
66     print('您的余额为:%f'%balance+'欢迎下次光临!')
67     print('-------------------------')
View Code

 注:新知识,我自己写的这个代码中在最后输出时,购物清单前面加了索引,具体代码如下:

1     for i in shopping_list:
2         print(shopping_list.index(i)+1,i)

此处可以应用一个方法,enumerate(),上面代码可以改为:

1     for i in enumerate(shopping_list,1):
2         print(i)

enumerate()里面的1,可以随意修改,代表索引从几开始,但按照目前的代码输出的结果如下:

-----您已购买以下商品-----
(1, 'iphone6s')
(2, 'mac book')
(3, 'coffee')
(4, 'python book')
(5, 'bicyle')
您的余额为:3588.000000欢迎下次光临!
-------------------------

是以元组的形式输出,不美观,但不要担心,python早已经考虑到了这个问题,只需将代码改为如下:

1     for i,k in enumerate(shopping_list,1):
2         print(i,k)

这代表将enumerate()方法中的序号赋值给i,列表内容赋值给k,此时输出结果如下:

-----您已购买以下商品-----
1 iphone6s
2 mac book
3 coffee
4 python book
5 bicyle
您的余额为:3588.000000欢迎下次光临!
-------------------------

这样就不会是元组的显示方式了,也美观了好多;这个方法就相当于列表a,b = [2,5],打印a,b的结果就是2,5,一一对应的,而如果a,b,c =[2,5],这样就不行,因为列表元素不够;

2.购物车改进版,代码如下:

 1 product_list=[
 2     ('Mac',9000),
 3     ('kindle',800),
 4     ('tesla',900000),
 5     ('python book',105),
 6     ('bike',2000),
 7 
 8 ]
 9 saving=input('please input your money:')
10 shopping_car=[]
11 if saving.isdigit():
12     saving=int(saving)
13     while True:
14         #打印商品内容
15         for i,v in enumerate(product_list,1):
16             print(i,'>>>>',v)
17 
18          #引导用户选择商品
19         choice=input('选择购买商品编号[退出:q]:')
20 
21         #验证输入是否合法
22         if choice.isdigit():
23             choice=int(choice)
24             if choice>0 and choice<=len(product_list):
25                 #将用户选择商品通过choice取出来
26                 p_item=product_list[choice-1]
27 
28                 #如果钱够,用本金saving减去该商品价格,并将该商品加入购物车
29                 if p_item[1]<saving:
30                     saving-=p_item[1]
31 
32                     shopping_car.append(p_item)
33 
34                 else:
35                     print('余额不足,还剩%s'%saving)
36                 print(p_item)
37             else:
38                 print('编码不存在')
39         elif choice=='q':
40             print('------------您已经购买如下商品----------------')
41             #循环遍历购物车里的商品,购物车存放的是已买商品
42             for i in shopping_car:
43                 print(i)
44             print('您还剩%s元钱'%saving)
45             break
46         else:
47             print('invalid input')
View Code

 

posted on 2018-02-05 20:45  加州牛肉面  阅读(158)  评论(0编辑  收藏  举报

导航