python学习日常-----作业(3)

python如何输出列对齐格式

问题描述:
现有商品列表如下:
products = [[“iphone”,688],[“MacPro”,14800],[“小米6”.2499],[“Coffee”,31],[“Book”,60],[“Nike”,699],需打印出以下格式:
商品列表------
0 iphone 6888
1 MacPro 14800
2 小米6 2499
3 coffee 31
4 Book 60
5 Nike 699
2.根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表。

**

  • 任务一实现:

**
按格式打印的时候,一开始使用的是"\t",输出效果差强人意

products = [["iphone",688],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
i = 0
while i <= 5:
    print(i,end = " ")
    for j in range(0,2):
        print(products[i][j],end = "\t\t")
    print("\n")
    i += 1
    

输出为:
python学习日常-----作业(3)_第1张图片使用"\t"输出的结果不能按列对齐

学习使用了format函数(后面详细介绍用法),结果如下:

products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
i = 0
width = 8                                                #列表宽度
while i <= 5:
    print(i,end = " ")
    for j in range(0,2):
        print("{:<{}}".format(products[i][j],width))     #调用format函数输出,调用完会自动换行  
    #print("\n")
    i += 1

python学习日常-----作业(3)_第2张图片发现format函数调用完会自动换行,我的一行还没结束,因此对结尾用end进行格式化:

products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
i = 0
width = 8                                                #列表宽度
while i <= 5:
    print(i,end = " ")
    for j in range(0,2):
        print("{:<{}}".format(products[i][j],width),end = "\t")     #调用format函数输出,调用完会自动换行
    print("\n")                                                      #一行输出完自动换行
    i += 1

效果图:
python学习日常-----作业(3)_第3张图片结果很工整完美!!

**

  • 任务二实现:

**

products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
shop = []
flag = 0
def show():
    i = 0
    width = 8                                                #列表宽度
    while i <= 5:
        print(i,end = " ")
        for j in range(0,2):
            print("{:<{}}".format(products[i][j],width),end = "\t")     #调用format函数输出,调用完会自动换行
        print("\n")                                                      #一行输出完自动换行
        i += 1
show()
for j in range(0,6):
    key = input("请输入所需物品的编号(0~5):(按q返回)\n")
    if key == 'q':
        print("您要购买的商品列表为:\n")
        break
    else:
        flag += 1
        shopnum = int(key)
        print("您选购的产品是:%s"%products[shopnum])
        shop.append(products[shopnum])
for k in range(0,flag):
    print(k,end = "\t")
    print(shop[k],end = "\n")

功能展示:
python学习日常-----作业(3)_第4张图片

总结:

1.format函数的用法:
功能:实现对齐打印,需要注意的是,打印完会自动换行,如果后面还有打印需求,可用end对输出结果进行格式化
(1)左对齐

"{:<{}}".format("要输出的内容", 格式宽度)   #format函数左对齐使用格式

实验代码:

width = 12                                      #定义宽度
for i in range(1,12,2):
    print("{:<{}}".format("⭐" * i, width))      #format格式输出

python学习日常-----作业(3)_第5张图片

(2)右对齐

"{:>{}}".format("要输出的内容", 格式宽度)   #format函数右对齐使用格式

实验代码:

width = 12                                      #定义宽度
for i in range(1,12,2):
    print("{:>{}}".format("⭐" * i, width))      #format格式输出

python学习日常-----作业(3)_第6张图片
用"⭐"输出有点bug,我认为是这个特殊符号的内部编码问题
改用"+"

width = 12                                      #定义宽度
for i in range(1,12,2):
    print("{:>{}}".format("+" * i, width))      #format格式输出

python学习日常-----作业(3)_第7张图片

(3)居中对齐

"{:^{}}".format("要输出的内容", 格式宽度)   #format函数居中使用格式

实验代码:

width = 12                                      #定义宽度
for i in range(1,12,2):
    print("{:^{}}".format("⭐" * i, width))      #format居中格式输出

python学习日常-----作业(3)_第8张图片

你可能感兴趣的:(python学习,python,编程语言,列表)