输入两行数字,第一行第一个数字表示值A1,第一行第二个数字表示第二行要输入n个数字,然后第二行输入n个数字和第一行的A1值进行差的绝对值排序这n个数字,从小到排序,如果绝对值相等情况也是按小到大排序。请写出代码
例如输入:
50 10 49 50 52 47 40 43 53 55 42 44
得到的输出结果为:
50 49 52 47 53 55 44 43 42 40
该题代码如下:
a,b = map(int,input().split())
print(a,b)
c=(input().split())
print(c)
for j in range(0,int(b)-1):
for i in range(0,int(b)-1-j):
if abs(int(c[i])-int(a)) > abs(int(c[i+1])-int(a)):
t = c[i+1]
c[i+1] = c[i]
c[i] = t
elif abs(int(c[i])-int(a)) == abs(int(c[i+1])-int(a)) and int(c[i])>int(c[i+1]):
t = c[i + 1]
c[i + 1] = c[i]
c[i] = t
print(c)
输出结果为
50 10 50 10 49 50 52 47 40 43 53 55 42 44 ['49', '50', '52', '47', '40', '43', '53', '55', '42', '44'] ['50', '49', '52', '47', '53', '55', '44', '43', '42', '40']
知识点1:
输入为一行两个数字,用空格分开,输出同样的内容。
a,b=map(int,input().split()) print(a,b)
结果为
11 22 11 22
map() 函数语法,map(function, iterable, ...),
- function -- 函数
- iterable -- 一个或多个序列
如把代码的int改为square,则输出是11的平方和十二的平方
如果只是单纯的输入数字的话返回的是列表的形式,split()以空格为分隔。如
a = input().split() print(a)
输出
11 22 33 ['11', '22', '33']
for i in c 用于获取c列表总每个元素,如
c=(input().split())
print(c)
for i in c:
print(i)
输出
11 22 1112 32 ['11', '22', '1112', '32'] 11 22 1112 32



