一、题目
用循环解答以下题目:
1、从外界获取10个值,输出最大值、最小值、平均值;
2、从外界获取10个值,输出最大值的索引、最小值的索引。
二、解答
思路:先理清楚题目所需要的知识点,再组合起来。
2.1从外界获取数据
input()函数
这里没有规定数据类型,所以我们可以把input()返回来的字符串转成整型或浮点型,如: int(input(‘请输入一个整数:n’)) float(input(‘请输入一个浮点数:n’))
获取的数据我们可以通过列表存起来。列表创建的时候如果是空的,则可以通过不断追加数据的方式。比如:
a=[]
a.append(int(input()))
如果列表原来不是空的,则可以通过列表名称和索引的方式替换列表中的元素:
a=[1,2,3,4,5,6,7,8,9,10]
a[0]=int(input())
由于元素比较多,所以我们可以通过循环的方式,比如:
i=0;
while i<10:
a.append(int(input())) #如果列表一开始是空的
a[i]=int(input())#如果列表一开始就有了数据
i=i+1
2.2获取最值
我们可以通过定义一个最值(初始值是列表里面的一个数),然后把这个最值和列表里面的所有元素进行比较,如果发现有值比最值还大,则让最值等于新的最大值/最小值。
如果不用循环,这是:
theMax=a[0]
if a[1]>theMax:
theMax=a[1]
if a[2]>theMax:
theMax=a[2]
…以此到:
if(a[9]>theMax):
theMax=a[9]
如果用循环,我们只需要产生一个变化的j来代替列表的索引:
j=0;
while j<len(a):
if j>theMax:
theMax=j
j++
同样最小值把上面的改成:
theMin=a[0]
if a[1]<theMin:
theMin=a[1]
if a[2]<theMin:
theMin=a[2]
…以此到:
if(a[9]<theMin):
theMin=a[9]
如果用循环,我们只需要产生一个变化的j来代替列表的索引:
j=0;
while j<len(a):
if j<theMin:
theMin=j
j++
2.3求平均值
求平均值首先求总和,总和可以通过累加的方式:
sum=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]
或者通过循环的方式:
sum=0
for z in a:
sum=sum+z
然后除以元素个数 len(a)就可以得到平均值了。
theAvg=sum/len(a)
2.4求最值索引
声明两个变量,用于存储最大最小值的索引的,默认从零开始(你设定的最大值、最小值从哪个开始,对应的最值索引的开始的值就是哪个):
indexMax=0
indexMin=0
如果是用for in :循环的,用一个临时值获取:
indexMax=0
indexMin=0
for j in a:
if j>theMax:#如果发现有一个值比theMax还大
theMax=j
indexMax=a.index(j)#通过函数获取索引
if theMin>j:#如果发现有一个值比theMin还小
theMin=j
indexMin=a.index(j)#通过函数获取索引
theSum=theSum+j
也可以用a.index()的方式获取索引:
q=0#记录索引
for j in a:
if j>theMax:#如果发现有一个值比theMax还大
theMax=j
indexMax=q
if theMin>j:#如果发现有一个值比theMin还小
theMin=j
indexMin = q
theSum=theSum+j
q = q + 1
或者通过while的方式获取:
indexMax=0
indexMin=0
i=0#记录索引
while i<len(a):
if a[i]>theMax:
theMax=a[i]
indexMax=i
if theMin>a[i]:
theMin=a[i]
indexMin=i
theSum=theSum+a[i]
i=i+1
三、代码
或者用函数,但是这道题的本意是用循环:
注意,虽然a.index(max(a))可以获取到出现的索引,但是这个只是返回最大值的第一次出现的位置
© 著作权归作者所有
微博