一、原题
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
二、解题代码
代码如下(示例):
def a1(): #输入
a=list(map(int,input().split()))
a2(a)
def a2(b): #排序
m=n=0
ma=mi=b[0]
for i in range(1,len(b)):
if b[i]>mi:
mi=b[i]
m=i
b[m],b[9]=b[9],b[m]
for i in range(1,len(b)):
if b[i]<ma:
ma=b[i]
n=i
b[n],b[0]=b[0],b[n]
a3(b)
def a3(c): #输出
for i in c:
print(i,end=" ")
a1() #无參调用
2.解题思路
以下代码是找出列表中的最大值:
def a2(b): #排序
m=n=0
max=min=b[0]
for i in range(1,len(b)):
if b[i]>min:
min=b[i]
m=i
b[m],b[9]=b[9],b[m]
样例输入
[2 1 3 4 5 6 7 8 10 9]
索引值:
(0 1 2 3 4 5 6 7 8 9)
首先将i=1带入
b[1]=1 小于 min=2 则不执行if语句
b[2]=3 大于 min=2 执行if语句后,min变成b[2]=3 m变成i=2
…
b[7]=8 大于 min=7 执行if语句后,min变成b[7]=8 m变成7
b[8]=10 大于 min=8 执行if语句后 ,min变成b[8]=10 m变成8
b[9]=9 小于 min=10 不执行if语句 ,循环结束。
b[8]和b[9]交换位置,使得最大的数放在最后的位置 。
以下代码是找出列表中的最小值:
for i in range(1,len(b)):
if b[i]<ma:
ma=b[i]
n=i
b[n],b[0]=b[0],b[n]
思路同上
首先将i=1带入
b[1]=1 小于 max=2 执行if语句后,max变成b[1]=1 n贬称i=1。
b[2]=3 大于 max=2 则不执行if语句,接下来的循环也都不执行if语句。
直接进行最小值位置的转换。
b[1]和b[0]交换位置,使得最小的数放在最前的位置。
最后输出处理完毕后的数列。