从本例学到什么

  1. 如何做到“不换行输出”?举例来说,如何做到把三个整数输出到同一行?
  2. 如何按每行三个(或5个,或n个)元素的格式输出?

实例程序

题目描述

本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。

输入格式:
输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。

输出格式:
顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。

输入样例:
10
5 1 7 14 6 36 4 28 50 100

输出样例:
-4 6 7
-8 30 -32
24 22 50

题目的解答

n = int(input())
#输入一组整数,存入ns列表
ns = []
n_strs = input().split()
for s in n_strs:
    ns.append(int(s))
#求出差值列表
ds = []
for i in range(n-1):
    ds.append(ns[i+1] - ns[i])

for i in range(1, n):
	#输出第i个数之际,有两种情形表明到达一行末尾:i是3的倍数或者i是最后一个元素的索引。
    if i % 3 == 0 or i == n-1:
        print(ds[i-1])  #每一行的末尾,换行输出
    else:
        print(ds[i-1], end=' ')  #不是一行末尾的时候,输出不换行,输出内容后跟一个空格

知识点

  1. 输出不换行的做法。
    以下语句使得输出不换行:
print(ds[i-1], end= '  ')

导致不换行的是end=’ ',这是一个关键字参数。它的意思是向print函数的end参数传递空格字符串。这样,print函数执行后,输出内容之后跟一个空格,且不换行。
对比而言,print(ds[i-1])产生的输出会换行,你也可以理解为输出内容之后跟一个换行符——这是默认的做法。

  1. 如果要在输出内容之后不跟空格,而是跟逗号,输出语句是: print(ds[i-1], end = ‘,’) 。这样不会换行。
  2. 要在输出内容之后不跟任何内容,输出语句是:print(ds[i-1], end = ‘’) 。这一句语句中,传给end参数的值是空字符,不是空格字符。空字符与空格字符串是不同的。这一语句产生的输出不会换行。
  3. “按每行k个元素的格式”输出m个数的做法是:
    (1)依次输出第i个数,i=1, 2, …, m。
    (2)如果i是k的倍数,那么输出该数后跟换行符。如果i等于m,则其后也跟换行符。否则,输出该数后跟空格字符。

小结

  1. print(x, end=’ ')中,关键字参数end = ’ '使得输出内容之后跟一个空格,不换行。
  2. 上一节讲解了“按每行k个元素的格式”输出m个数的做法。