Python入门100个实例(38)——输出占4列列宽

从本例学到什么

  1. 输出一个整数,占4列列宽。推而广之,占n列列宽。
  2. 在屏幕的同一行输出多个数。做法是向print()函数传入end参数的值。

实例程序

题目描述

求最大数和它的下标, 并与a[0]对换位置
有一数组内存放10个整数,要求找出最大数和它的下标, 然后把它和数组中第0个元素对换位置。

输入格式:
在一行中输入10个整数,数据之间只能用1个空格间隔。

输出格式:
在一行中直接输出变化后的数组,每个数输出占4列列宽。在下一行中按照“max=最大值,位置=最大值下标”的顺序输出最大数和它的下标。

输入样例:
1 2 3 4 5 6 7 8 9 10

输出样例:
10 2 3 4 5 6 7 8 9 1
max=10,weizhi=9

上述题目的参考答案

#输入一组整数
line = input().split()
ns = []
for s in line:
    ns.append(int(s))
# print(ns)

n_max = max(ns)  #求出整数列表ns中的最大值
i_max = ns.index(n_max)  #求出最大值在列表中的位置
ns[0], ns[i_max] = ns[i_max], ns[0]  #最大值与第一个元素交换
for i in ns:
    print("%4d"%i, end='')  #输出整数,占4列列宽
print()
print("max=%d,weizhi=%d"%(n_max, i_max))  #输出最大值及其位置

上述代码中的第2-5行代码,可以替换为如下更简短的代码。

ns = [int(s) for s in input().split()

知识点讲解

  1. 整数输出占4列列宽。
    示范语句是:
print("%4d"%i, end='')

解释说明如下:
(1)print函数有两个参数。第1个参数是"%4d"%i。这是一个表达式,结果是一个字符串。我们把这种表达式叫做格式化控制表达式。格式化控制表达式由3部分组成:<格式化控制串>、连接符%和值。本例中,"%4d"是格式化控制串。连接符%是一种运算符。而变量i是值。
(2)格式化控制串"%4d",其中"%d"起到占位符作用,表示在这个位置要输出一个整数(再举一例,"%f"表示要输出一个浮点数),d之前的4表示占4列列宽。
(3)假设变量i的值为10,格式化控制表达式"%4d"%i计算得到的结果字符串是"##10",这里,一个#代表一个空格。变量i的值代入占位符"%4d"。

  1. 格式化控制表达式的第二个例子。
    以下语句使用了格式化控制表达式。
print("max=%d,weizhi=%d"%(n_max, i_max)) 

解释说明如下:
(1)格式化控制表达式是"max=%d,weizhi=%d"%(n_max, i_max)。"max=%d,weizhi=%d"是格式化控制串。(n_max, i_max)是值,有两个数组成。两者用连接符%组合在一起。
(2)"max=%d,weizhi=%d"中,两个%d都是占位符。第一个%d,将用n_max的值代入。第二个%d,将用i_max的值代入。
(3)作为值的(n_max, i_max)的写法中,括号不能丢。这个值是由多个元组组成的元组。

  1. 在屏幕的同一行输出多个数。
    以下两行代码做到了这一点。
for i in ns:
    print("%4d"%i, end='')  #输出整数,占4列列宽

解释说明如下:
(1)关键点是print()函数的第二个参数:end=’’。这种参数的写法叫做关键字参数,书写格式是:<参数名> = 参数值。这里,end是参数名,说明print函数有一个名字为end的参数。而空字符’‘是参数值。
(2)print(a, end=’’) 的作用是,在输出a的值之后跟着输出空字符(等同于没有输出内容)。注:单引号之间没有空格。
(3)print(a, end=’ ‘) 的作用是,在输出a的值之后跟着输出空格字符。注:引号之间有一个空格。
(4)print(a, end=’,’) 的作用是,在输出a的值之后跟着输出逗号。注:引号之间有一个逗号。
(5)print(a)的作用是,在输出a的值之后跟着输出换行符。
(6)对于(2)、(3)、(4),后续内容的输出将位于同一行。对于(5),后续内容的输出将新起一行。

小结

  1. 格式化控制串"%4d"的作用是,整数占4列列宽。
  2. print("%4d"%i, end=’’) 中,第二个参数end=’‘是关键字参数,意思是向名字为end的参数传递空字符’’,作用是在输出变量i之后,跟着输出空字符,后续内容的输出将位于同一行。
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值