Python day5:格式化输出/for循环的使用/列表,元组的使用/购物车例题

格式化输出

Name='Wang'
Age=21
Job='Meteorology student'
msg='''
-------Info or %s-------
Name=%s
Age=%d
Job=%s
-------end---------'''%(Name,Name,Age,Job)
print(msg)

这样一来输出的变量msg变得非常好看,非常实用的哦。

占位符的使用

格式化输出应注意占位符的使用,占位符

%s代表的相应变量应为字符串(string)

%d对应整数(digit)

%f对应浮点数(float)


布尔值(True, False)

真True

假False


字符串

字符串拼接

Name='Wang'
Job='Meteorology student'
print(Name+Job)


for循环

for i in range(3):
    print(i)

其中,range(3)=[0,1,2], 代表从[0,1,2]这一数组中按从左到右顺序提取出变量i并应用到循环内部的计算当中。

range()的用法

range(起始值,终止值,间隔)

其中range的右端是开区间,即range取不到终止值!并且range中所有值必须为整数型!

小例题1:应用 for循环输出100以内能被3整除的数

for i in range(0,101,1):
    if i%3==0:
        print(i)

或者,有一个投机取巧的方法

for i in range(0,101,3):
    print(i)

break在for循环的用法

和while语句一样,只要for循环没有被break打断,就会执行for循环之后的else语句,我们可以利用这一性质简化程序

!注意,即使是在最后一次循环的末尾使用break,也不要当作结果是完整的循环,因为这样子循环下面的else语句依旧不会执行。

小例题2:给定用户名:Wang,以及密码:duangduang,应用for循环判断输入的用户名和密码,并且在输入失败一定次数后后跳出一段话来骂输入的人(也可以用while循环试试)

方法1,利用布尔值

Yusername='Wang'
Ypassword='duangduang'
time=5
for i in range(time):
    username=input('input your username')
    password=input('input your password')
    if username==Yusername and password==Ypassword:
        print('welcome %s'%Yusername)
        IDjudge=False
        break
    else:
        print('wrong username or password, trying chance left: %d times'%(time-i-1))
        IDjudge=True
if IDjudge==True:
    print('臭不要脸')
    

方法2,利用else

Yusername='Wang'
Ypassword='duangduang'
time=5
for i in range(time):
    username=input('input your username')
    password=input('input your password')
    if username==Yusername and password==Ypassword:
        print('welcome %s'%Yusername)
        break
    else:
        print('wrong username or password, trying chance left: %d times'%(time-i))
else:
    print('臭不要脸')

continue在for循环中的用法

同while


列表,元组的使用

列表的表示

a=['alpha','beta','gamma','zelta']
a=list(('alpha','beta','gamma','zelta'))
a=list(['alpha','beta','gamma','zelta'])

后两个表示方法相当于调用了list这个族(class)的函数进行生成,我们接下来学的增删改查中加点(例如:a.append())的方法就是调用了list族中的函数对对象进行操作。(族这个概念之后会学到)

列表的增删改查

1.查/切片

a=['alpha','beta','gamma','zelta']
print(a)#显示列表内的所有内容
print(a[0])#显示列表的第一个值
print(a[-1])#显示列表最后一个值
print(a[0:2])#显示列表第一个到第二个的值(注意是取值范围最后是开区间)
print(a[0:])#显示列表第一个到最后一个值
print(a[0:-1])#显示列表第一个到倒数第二个值
print(a[0:-1:2])#从左到右两个两个取值
print(a[-1:0:-1]#从倒数第二个往左一个一个取值,注意,
#反方向输出时要保证print(a[右边界:左边界:负数]),这和从左到右是反着的

2.添加:append和insert

append:在列表的最后直接添加一个内容(例:a.append('sigma'))

insert: 把某个内容放到列表的某个位置(例:a.insert(列表位置,内容))

a=['alpha','beta','gamma','zelta']
print(a.append('sigma'))
print(a.insert(1,'sigma'))

3.修改

a=['alpha','beta','gamma','zelta']
print(a[1]='sigma')
print(a[1:3]=['a','b'])

4.删除

remove:a.remove(删除内容),注意,括号内不是删除内容的索引值‘index’,而是删除内容,且删除内容只能删一个

a=['alpha','beta','gamma','zelta']
a.remove('alpha')
print(a)
a.remove(a[0])
print(a)

pop:a.pop(索引值),并且能返回给你删掉的值,也只能删一个

a=['alpha','beta','gamma','zelta']
print(a.pop(0))
print(a)

del:del a[0],啥都能删

a=['alpha','beta','gamma','zelta']
del a[0]
print(a)
del a #整个变量都被删没了

clear: a.clear() ,清空列表内容变成空列表

5.1 count

a.count(元素内容)用来计算某个元素出现次数

a=['alpha','beta','gamma','zelta']
print(a.count('alpha'))

5.2 extend

a.extend(列表),给原来的列表里面添加另一个列表的元素

a=['alpha','beta','gamma','zelta']
b=['a','b','c','d']
print(a.extend(b))

5.3 index

a.index(元素内容),找到元素在列表的位置

a=['alpha','beta','gamma','zelta']
print(a.index('alpha'))

若元素中有多个相同,只找第一个元素 

5.4 reverse

a.reverse(),反转元素位置,没有返回值

a=['alpha','beta','gamma','zelta']
a.reverse()
print(a)

5.5 sort

a.sort(),给元素排序,对于数字是从小到大排序,对于字符按字母表排序

a=['alpha','beta','gamma','zelta']
a.sort()
print(a)

5.6 in

元素 in a,判断元素是否在特定列表中,输出值为布尔值

a=['alpha','beta','gamma','zelta']
print('alpha' in a)

5.7 身份判断

a=['alpha','beta','gamma','zelta']
print(type(a) is a list)

输出结果为布尔值

5.8 enumerate

enumerate(列表,起始值*),用于显示列表及其所对应的索引,其中起始值参数默认为0

a=['alpha','beta','gamma','zelta']
print(enumerate(a,1))

例题:购物车程序

salary=5000

1.iphone6 5800

2.mac book 9000

3.coffee 32

4.python book 80

5.bicycle 1500

输入商品对应index,计算价格,提示余额

如果没啥想买的,顾客按quit进行结账,并显示买了什么东西,余额,并欢迎下次光临

我的答案:

salary=5000
goods=['iphone6s','mac book','coffee','python book','bicycle']
goodsValue=[5800,9000,32,80,1500]
goodlistgood=[]
for i in range(len(goods)):
    goodlistgood.append(goods[i])
    goodlistgood.append(str(goodsValue[i]))
goodlistgood=tuple(goodlistgood)
goodslist='''
---------------Small Shop--------------
商品序号        商品名:价格       
1               %s:%s
2               %s:%s
3               %s:%s
4               %s:%s
5               %s:%s
'''%goodlistgood
return_to_buy=True
exit_GouWu=False
GouWuChe=[]
while True:
    GouWuChe.sort()
    print('你的余额:',salary,end='\n'*3)
    print('你的购物车:',GouWuChe)
    if exit_GouWu:
        break
    else:
        print(goodslist,end='\n'*3)
    if return_to_buy:
        while True:
            goodindex=int(input('选择一件你购买的商品序号:'))-1
            if goodindex in range(1,len(goods)+1):
                good=goods[goodindex]
                goodValue=goodsValue[goodindex]
                salaryleft=salary-goodValue
                break
            else:
                print('请输入商品序号')
        if salaryleft<0:
            choose=input('余额不足,重新选择(输入Y)或结束购买(输入N)')
            if choose=='Y':
                continue
            elif choose=='N':
                break
                exit_GouWu=True
            else:
                print('dada')

        else:
            salary=salaryleft
            GouWuChe.append(good)
            choose1=input('是否继续购买(Y/N)')
            if choose1=='N':
                exit_GouWu=True
            elif choose1=='Y':
                continue


    

改进

我们把商品和商品的价格是分开在两个列表中的,这样子比较傻,为什么不把对应的商品和价格放在一个列表里面并提出呢?

例如

goods=['iphone6s','mac book','coffee','python book','bicycle']
goodsValue=[5800,9000,32,80,1500]

变为

goods=[['iphone6s',5800],\
['mac book',9000],\
['coffee',32],\
['python book',80],\
['bicycle',1500]]

print('苹果6s',goods[0][0],'苹果6s的价格',goods[0][1])

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值