码迷,mamicode.com
首页 > 编程语言 > 详细

python列表和循环判断

时间:2017-09-11 12:21:03      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:余额   和我   phone   pop   没有   rem   知识   if判断   pes   

列表和循环

__author__ = ‘Yimtsao‘
# coding: UTF-8
list = [
(‘iphone‘,8050),
(‘mac pro‘,12000),
(‘starbuck latte‘,31),
(‘alex python‘,82),
(‘bike‘,800),
] #商品列表
gouwuche = [] #空的购物车
while True:
wage = input("请输入你现有的金额:")
if wage.isdigit(): #判断该字符串是否为数字
wage = int(wage) #将由数字组成的字符串定义为整数
while True:
for list_tmp in list:
print (list.index(list_tmp),list_tmp) #循环打印出商品列表
num = input("选择你要买的商品编号:")
if num.isdigit():
num = int(num)
if num >= 0 and num < len(list): #判断 输入的编号是否在商品列表编号范围内
Articles = list[num]
if wage >= Articles[1]: #判断余额是否够买商品
wage-=Articles[1] #购买商品后的余额
gouwuche.append(Articles) #将购买的商品加入购物车
print("你已经购买了%s,你现在的余额是%s"%(Articles,wage))
else:
print("你的余额不足,快去赚钱吧,你还有",wage)
else:
print("输出错误的商品编号,请重新选择")
else :
if num == "q" : #输入为Q 打印余额和商品然后退出
print("你的的购物车里有%s,你的余额为%s"%(gouwuche,wage))
exit()
else:
print("你的输入是无效参数,请重新输入")
else:
if wage == "q":
exit()
else:
print("你的输入错误,请重试,若需退出请输入q")

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
先附上丑陋的代码,这是利用这三天学到知识写的,主要功能实现 输入你的现金,循环打印出商品列表,按商品编号购物。任意环节按输入q可以退出,并打印余额和已经购买的商品。
在我编写时遇到的难点分两处: 第一,如果打印出商品列表,一开始我想用list = """ """然后再""" """中间列表写出,但这样打印出的商品列表和我们的创建的列表就没有关联了,想要维护也很麻烦,所以这种愚蠢的想法是不可取的。
最后我采用for i in list 的循环打印,打印出列表元素和利用list.index()取小标来打印商品编号。第二的难点是怎么让输入的字符串,如果是数字就取整,如果不是数字就判断是不是q退出。这里我就利用了isdigit() 判断字符串是不是纯数字
是的话将该字符串换为整数,如果不是在判断是不是q退出。
这二点都做好了,其余的就是简单if判断后进行打印和运算下,缩进很重要,在写的时候因为缩进问题调试了好几次。


列表
列表是我们最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
定义列表
name=[‘Yimtsao‘,‘cnblogs‘,‘china‘]
name[0]
Yimtsao
name[1]
cnblogs
name[2]
china
切片:取列表中多个元素
name[0:1] #列表中下标从0到1的元素,不包括最后一位
‘Yimtsao‘
name[0:-1] #-1 表示最后一位
name[:2] #放空表示从第一位开始
name[0::2] #后面的2是代表,每隔一个元素,就取一个

追加
>>> name
[Yimtsao, cnblogs]
>>> name.append("new")
>>> name
[Yimtsao, cnblogs, new]

 插入

 

>>> name
[Yimtsao, cnblogs]
>>> name.insert(1,"new") 在下标为1的前面插入
>>> name
[Yimtsao, new, cnblogs]

 

修改

>>> name
[Yimtsao, cnblogs]
>>> name[1] = "new" 将下标为1的元素赋予新的值
>>> name
[Yimtsao, new]

删除

>>> del name[1]  删除下标1的元素
>>> name
[Yimtsao]
name.remove("Yimtsao") 指定删除的元素
[new]
name.pop() 删除列表最后一个元素
[Yimtsao,]

拓展

 

>>> name
[Yimtsao, new]
>>>b = [a,b]
>>>name.extend(b) 将b列表加入name里

 

拷贝

>>>name
[Yimtsao, new,a,b]
>>>name_cp = name.copy()
>>>name_cp
[Yimtsao, new,a,b]

统计

name.count("")统计列表元素的个数
>>>name
[Yimtsao, new,a,b,a]
>>>name.count("a")
2

排序&翻转

>>> name
[YimTsao, cnblogs, 1, 2, 3]
>>> name.sort() #排序
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能排序
>>> name
[YimTsao, cnblogs, 1,2,3]
>>> name.sort()
[1, 2, 3, YimTsao, cnblogs]
 name.reverse()
[3, 2, 1, cnblogs, YimTsao]

获取下标

>>>name
[YimTsao, cnblogs,1,1,3]
>>>print(name.index(1)) #只返回找到的第一个小标
2

 









python列表和循环判断

标签:余额   和我   phone   pop   没有   rem   知识   if判断   pes   

原文地址:http://www.cnblogs.com/Yimtsao/p/7504202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!