答案仅供参考,部分题目答案不唯一。

单项选择题

2-1 不可以用下标的方式访问对象中元素的值的是()。
A. 列表 B. 元组 C. 集合 D. 字符串
答案:C

2-2 在表达式a+b中,变量a和b的类型不能是下列选项中的( )。
A. 字符串 B. 列表 C. 集合 D. 元组
答案:C

2-3 下列程序运行输出结果为_______。
A. ['defenestrate']
B. ['window', 'defenestrate']
C. ['cat', 'window', 'defenestrate']
D. ['cat', 'window', 'defenestrate', 'defenestrate']
答案:D

2-4 已知x是一个列表,则以下选项中,不能访问列表最后一个元素的是()。
A. x[-1] B. x[len(x)-1] C. x[-1:] D. x[-1:-2]
答案:D

2-5 Python集合中的元素不可以是()。
A. 数字 B. 字符串 C. 元组 D. 列表
答案:D

2-6 以下程序的运行结果是()
A. ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
B. ['1', '2', '3', '4', '5', '6', '7', '8', '9']
C. 45
D. 以上都不对
答案:A

2-7 下面程序的运行结果是什么?
A. 9 B. 10 C. 8 D. 其他
答案:D

2-8 关于 Python 的元组类型,以下选项中描述错误的是()。
A. 元组一旦创建就不能被修改
B. 元组中元素不可以是不同类型
C. 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
D. Python 中元组采用逗号和圆括号(可选)来表示
答案:B

2-9 对于for i in s:......语句,以下说法不正确的是()。
A. 如果s为字符串,则该循环执行时,i取值会对字符串中的每个字符进行遍历
B. 如果s为列表,则该循环执行时,i取值会对列表中的每个元素进行遍历
C. 如果s为字典,则该循环执行时,i取值会对字典中的每个键值对进行遍历
D. 如果s为集合,则该循环执行时,i取值会对集合中的每个元素进行遍历
答案:C

2-10 可以使用____运算符来确定一个键是否在字典中。
A. & B. in C. ^替换为正确项 D. ?
答案:B

2-11 对于字典dic={1:2, '3': 'd', 'd':2, 4:{1:2, 2:3} }, len(dic)的值是()
A. 3 B. 4 C. 5 D. 6
答案:B

2-12 列表中的数据项被称为什么?
A. 数据 B. 元素 C. 条目 D. 值
答案:B

2-13 给定字典d, 以下选项中对d.items()的描述正确的是 ( )
A. 返回一种dict_items类型,包括字典d中所有键值对
B. 返回一个元组类型,每个元素是一个二元元组,包括字典d中所有键值对
C. 返回一个列表类型,每个元素是一个二元元组,包括字典d中所有键值对
D. 返回一个集合类型,每个元素是一个二元元组,包括字典d中所有键值对
答案:A

2-14 已知x=[1,3,5]、y=[2,4,6],则x+y的结果是_____。
A. [2, 4, 6, 1, 3, 5]
B. [1, 2, 3, 4, 5, 6]
C. [1, 3, 5, 2, 4, 6]
D. [6, 5, 4, 3, 2, 1]
答案:C

2-15 对于正确的表达式a[2],a不可能是以下哪个类型?
A. 集合 B. 列表 C. 元组 D. 字典
答案:A


多项选择题

3-1 对列表对象来说,通过切片操作,可以完成的功能有哪些?( )。
A. 增加元素 B. 删除元素 C. 修改元素 D. 查询元素
答案:A B C D

3-2 如何创建一个包含如下元素:‘p’,’y’,’t’,’h’,’o’,’n’的列表?( )
A. x=['p','y','t','h','o','n']
B. x=list['python']
C. x=list('python')
D. x=list({'p','y','t','h','o','n'})
E. x=list(('p','y','t','h','o','n'))
答案:C A E

3-3 使用list()函数把什么对象转换成列表?
A. 元组 B. range对象,字符串 C. 字典、集合 D. 其他可迭代对象
答案:A B C D

3-4 元组的编辑(高教社,《Python编程基础及应用》习题5-1)
A. tup的变量命名与语言关键字冲突。
B. 元组没有append()成员函数。
C. 元组没有remove()方法。
D. 元组不可以修改元素。
答案:B C D

3-5 执行下列()代码的结果是:['a', 'b', 'c', 'd', 'e', 'f', 'g']。
A.

s=['b','c','e','z','f','x']
s.insert(0,'a')
s.pop()
s.remove('z')
s.insert(3,'d')
s.append('g')
print(s)

B.

s=['b','c','e','z','f','x']
s.pop(-1)
s.append('g')
s.remove('z')
s.insert(0,'a')
s.insert(3,'d')
print(s)

C.

s=['b','c','e','z','f','x']
s.pop(-1)
s.append('g')
s.remove('z')
s.insert(0,'a',3,'d')
print(s)

D.

s=['b','c','e','z','f','x']
s.insert(0,'a')
s.pop(0)
s.remove('z')
s.insert(3,'d')
s.append('g')
print(s)

答案:A B

3-6 关于集合,下面说法正确的是( )
A. 集合里的元素只能是固定数据类型的数据
B. 集合里的元素是无序的,不能索引
C. 集合里的元素必须是同一数据类型的数据
D. 集合里必须有一个或多个元素
答案:A B

3-7 下面能创建集合{'MicroSoft', 'Google', 'Oracle', 'Taobao', 'Runoob'}的是(
A.

 set("Google", "Runoob", "Taobao","MicroSoft","Oracle")

B.

 set(("Google", "Runoob", "Taobao","MicroSoft","Oracle"))

C.

 set(["Google", "Runoob", "Taobao","MicroSoft","Oracle"])

D.

 set("Google, Runoob, Taobao,MicroSoft,Oracle")

答案:B C


填空题

4-1 执行下面这段代码,

dict1 = {'a':1,'b':2,'a':3}
print(dict1['a'])

运行结果是( )
答案
第1空:3

4-2 基本操作 - 实验11 字典操作及应用 - 《Python编程基础》

GDP={"CN":15.63,"US":20.9,"DE":3.78,"JP":5.13}

上述代码中的字典GDP包含了部分国家的国内生产总值数据,单位:万亿美元。请依次执行下述代码,并在计算机上调试运行,填写执行结果,注意,内容一定要从真实的执行结果中复制。遇到不会的内容,请回顾教材第7章。

print(len(GDP))

上述代码用于打印字典中键值对的个数,执行结果为:( ) 。

GDP["UK"] = 2.59
print(GDP)

上述代码用于向字典中添加一个键为"UK",值为2.59的键值对,执行结果为:( ) 。

GDP["JP"] = 5.23

因为"JP"键已存在,故上述代码将上述字典中键"JP"对应的值改为5.23。

del GDP["DE"]

执行上述代码后,键为"DE"的键值对从字典中被移除。

GDP1= GDP
print(GDP==GDP1)

执行结果为:( )。

print(GDP is GDP1)

GDP1和GDP是绑定在同一个字典对象上的两个名字,故执行结果为:( )。

GDP1 = GDP.copy()
print(GDP1)

GDP.copy()将产生GDP字典的复制品,而GDP不变。执行结果为:( ) 。

print(GDP==GDP1)

执行结果为:( )。

print(GDP is GDP1)

执行结果为: ( ) 。

print("CN" in GDP)

上述代码用于判断GDP字典中是否包含键"CN",执行结果为:( ) 。

print(20.9 in GDP)

20.9是值,不是键,故执行结果为:( )。

print(GDP["CN"])

执行结果为:( )。

print(GDP.get("CN",999))

执行结果为:( )。
对于"FR"这种不存在键,不能直接使用GDP["FR"]取值,否则会出错。正确方法是使用get()函数:

print(GDP.get("FR",0))

执行结果为:( )。

GDP2={"IT":1.84,"ES":1.24,"DE":2.78,"JP":5.23}
GDP.update(GDP2)
print(GDP)

执行结果为:( )。

GDP.clear()
print(GDP)

执行结果为:( )。
解题思路: 请参考《Python编程实验》(待出版)。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。
答案
第1空:4,第2空:{'CN': 15.63, 'US': 20.9, 'DE': 3.78, 'JP': 5.13, 'UK': 2.59},第3空:True,第4空:True,第5空:{'CN': 15.63, 'US': 20.9, 'JP': 5.23, 'UK': 2.59},第6空:True,第7空:False,第8空:True,第9空:False,第10空:15.63,第11空:15.63,第12空:0,第13空:{'CN': 15.63, 'US': 20.9, 'JP': 5.23, 'UK': 2.59, 'IT': 1.84, 'ES': 1.24, 'DE': 2.78},第14空:{}

4-3 字典的成员函数(高教社,《Python编程基础及应用》习题7-3)
请写出下述程序的执行结果:

stu = {"name":"Eric Zhang","english":80,"python":90,"math":100}
print(len(stu))
print(stu["name"])
print(list(stu.keys()))
print("math" in stu)
print(stu["math"]+10)
print(stu["math"])
print(list(stu.items())[1])
print(list(stu.values())[2])

第1行:( )
第2行:( )
第3行:( )
第4行:( )
第5行:( )
第6行:( )
第7行:( )
第8行:( )
答案
第1空:4,第2空:Eric Zhang,第3空:['name', 'english', 'python', 'math'],第4空:True,第5空:110,第6空:100,第7空:('english', 80),第8空:90

4-4 列表的切片语法(高教社,《Python编程基础及应用》习题4-4)
请写出下述程序的执行结果,本题请人肉计算,避免在计算机上运行。

lst=[23,56,8,900,24]
print(lst[-2])
print(lst[1:4])
print(lst[::2])
print(lst[::-1])

第1行:( )
第2行:( )
第3行:( )
第4行:( )
答案
第1空:900,第2空:[56, 8, 900],第3空:[23, 8, 24],第4空:[24, 900, 8, 56, 23]

4-5 list与range函数(高教社,《Python编程基础及应用》习题4-14)
写出下述程序的执行结果

print(list(range(2,10,3)))
print(list(range(5)))
print(list(range(10,-10,-5)))

执行结果第1行: ( )
执行结果第2行: ( )
执行结果第3行: ( )
答案
第1空:[2, 5, 8],第2空:[0, 1, 2, 3, 4],第3空:[10, 5, 0, -5]

4-6 下面程序的输出是( ) 。

row=[0]*3
data=[row,row,row]
data[2][2]=7
print(data[0][2])

答案
第1空:7

4-7 print(sum((1,3,5,7,9))/len((1,3,5,7,9))) 的输出是( )。
答案
第1空:5.0

4-8 如下程序代码:

a=[1,2,3,4]
b=a
print(id(a)==id(b))
c=a.copy()
print(id(a)==id(c))
d=a[:]
print(id(a)==id(d))

执行后输出的结果分别是:
( )
( )
( )
答案
第1空:True,第2空:False,第3空:False


程序填空题

5-1 请根据给出的执行结果将下述程序补充完整,并上机调试运行。

a = [1,2,3,4,5,6,7]
b = a
c = a[BLANK]
a[BLANK] = 99,100
print("a=",a,id(a)==id(b))
print("b=",b)
print("c=",c,id(c)==id(a))

期望的执行结果:

a= [1, 2, 3, 99, 100, 6, 7] True
b= [1, 2, 3, 99, 100, 6, 7]
c= [1, 2, 3, 4, 5, 6, 7] False

思考:为什么a与b的id相同,而a与c的id不同? 这说明什么?
解题思路: 请参考《Python编程实验》(待出版)。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。
答案
第1空::,第2空:3:5

5-2 请根据注释要求为range()函数添加合适的参数。

print(list(range(BLANK)))    期望输出:[0, 1, 2, 3]
print(list(range(BLANK,BLANK)))       期望输出:[7, 8, 9, 10]
print(list(range(1,BLANK,BLANK)))     期望输出:[1, 4, 7, 10, 13]
print(list(range(BLANK,2,BLANK)))     期望输出:[15, 11, 7, 3]
print(list(range(BLANK,20,BLANK)))    期望输出:[-20, -14, -8, -2, 4, 10, 16]
print(list(range(BLANK,-22,BLANK)))   期望输出:[-1, -8, -15]

解题思路: 请参考《Python编程实验》(待出版)。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。
答案
第1空:4,第2空:7,第3空:11,第4空:16,第5空:3,第6空:15,第7空:-4,第8空:-20,第9空:6,第10空:-1,第11空:-7


函数题

6-1 列表推导生成随机数矩阵(高教社,《Python编程基础及应用》习题4-10)

编写一个Python函数,生成一个m行n列的元素值不大于20的随机数矩阵(二维列表)。
提示:使用random.randint()函数来生成随机数。
函数接口定义:

def generateMatrix(m,n)

m: 行数,int, 1 < m < 100; n: 列数, int, 1 < n < 100.
裁判测试程序样例:

import random
m = int(input())
n = int(input())
r = generateMatrix(m,n)
p = True
for i in range(m):
    for j in range(n):
        if r[i][j] > 20:
            p = False
            break
if m > 3 and n > 3:
    if r[0][0] == r[2][2] and r[1][1] == r[1][2] and r[0][2] == r[3][0]:
        p = False
print(p)
#测试程序的输出:
True

测试输入样例:

5
3

测试程序输出:

True

参考答案

def generateMatrix(a, b):
    return [[random.randint(0, 20) for x in range(b)] for y in range(a)]

6-2 编写函数,判断用户传入的列表长度并完成切片

编写一个函数,判断用户传入的列表长度是否大于2,如果大于2,只保留前两个,并将新内容返回给调用者。
函数定义:

def func(list1)

裁判测试程序样例:

/* 请在这里填写答案 */
print(func([1, 2, 3, 4]))
print(func([5, 6]))

输入样例:

输出样例:
在这里给出相应的输出。

[1, 2]
[5, 6]

参考答案

def func(lst):
    if len(lst) <= 2:
        return lst
    else:
        return lst[0:2]

编程题

备注

下方出现的形似下方代码的写法

        try:
            value = dic[item]
        except KeyError:
            value = 0

均可替换成

        value = dic.get(item, 0)

7-1 合并两个列表并去重

输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10;
合并alist和blist,并将重复的元素去掉后输出一个新的列表clist。
可以使用以下实现列表alist的输入:

   alist=list(map(int,input().split()))

同时为保证输出结果一致,请将集合内元素排序之后再输出。
如对于列表alist,可输出sorted(alist)。
输入格式:
共两行,每一行都用来输入列表中的元素值,以空格隔开(可能不至一个空格 )。
输出格式:
共一行,以列表形式打印输出。
输入样例:
在这里给出一组输入。例如:

1 2 3
4 3 2

输出样例:
在这里给出相应的输出。例如:

[1, 2, 3, 4]

参考答案

list_a = list(map(int, input().split()))
list_b = list(map(int, input().split()))
set_ab = set(list_a + list_b)
list_ab = list(set_ab)
print(sorted(list_ab))

7-2 jmu-Java&Python-统计文字中的单词数量并按出现次数排序

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数
注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。
基本版:
统计时,区分字母大小写,且不删除指定标点符号。
进阶版:

  1. 统计前,需要从文字中删除指定标点符号!.,:*?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
  2. 统计单词时需要忽略单词的大小写。
    输入说明
    若干行英文,最后以!!!!!为结束。
    输出说明
    单词数量
    出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。
    输入样例1

    failure is probably the fortification in your pole
    it is like a peek your wallet as the thief when you
    are thinking how to spend several hard-won lepta
           
    when you are wondering whether new money it has laid
    background because of you then at the heart of the
      
    most lax alert and most low awareness and left it
    godsend failed
    !!!!!

    输出样例1

    46
    the=4
    it=3
    you=3
    and=2
    are=2
    is=2
    most=2
    of=2
    when=2
    your=2

    输入样例2

    Failure is probably The fortification in your pole!
    It is like a peek your wallet as the thief when You
    are thinking how to. spend several hard-won lepta.
    when yoU are? wondering whether new money it has laid
    background Because of: yOu?, then at the heart of the
    Tom say: Who is the best? No one dare to say yes.
    most lax alert and! most low awareness and* left it
    godsend failed
    !!!!!

    输出样例2

    54
    the=5
    is=3
    it=3
    you=3
    and=2
    are=2
    most=2
    of=2
    say=2
    to=2

    参考答案

    def format_string(s):
     return s.replace("!", " ").replace(",", " ").replace(".", " ").replace(":", " ").replace("*", " ").replace("?", " ")
    
    
    dic = {}
    while 1:
     string = input()
     if string == "!!!!!":
         break
     else:
         string = format_string(string.lower())
         lst = list(map(str, string.split()))
     for item in lst:
         try:
             value = dic[item]
         except KeyError:
             value = 0
         dic[item] = value + 1
    items = list(dic.items())
    items.sort(key=lambda x: (-x[1], x[0]))
    print(len(items))
    for i in range(10):
     if i >= len(items):
         break
     key, val = items[i]
     print("{}={}".format(key, val))

7-3 列表操作

输入一个1-100之间的正整数 n, 以 n 为随机数种子随机生成一个不大于 n 的正整数 m 。 生成一个包含元素为 1,2,3……n 的列表 ls,在列表 ls 中删除值为 m 的整数倍的元素,在两行中输出原始列表和删除 m 倍数后的列表。
输入格式:
输入一个1-100之间的正整数 n
输出格式:
两行,每行一个列表
输入样例:
在这里给出一组输入。例如:

20

输出样例:
在这里给出相应的输出。例如:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]

参考答案

import random
lst = []
opr = []
n = eval(input())
random.seed(n)
m = random.randint(1, n)
for i in range(1, n + 1):
    lst.append(i)
    x, y = (m, i) if m > i else (i, m)
    if x % y != 0 or i == 1:
        opr.append(i)
print(lst)
print(opr)

7-4 字典的应用-找出出现次数最多的字符串(高教社,《Python编程基础及应用》习题7-6)

编写一个程序,从键盘读取未指定个数的字符串,一行一个,以字符串"q"为输入结束标志("q"不列入统计范围)。使用字典找出其中出现次数最多的字符串,打印该字符串及其出现次数。
注意:本题的测试用例中将保证只有一个字符串出现次数最多。
输入格式:
字符串1
字符串2
...
字符串n
q
输出格式:
字符串 出现次数
输入样例:

abc
abc
bcd
xxx
q

输出样例:

abc 2

参考答案

dic = {}
while 1:
    string = input()
    if string == "q":
        break
    try:
        value = dic[string]
    except KeyError:
        value = 0
    dic[string] = value + 1
print(max(dic, key=dic.get), max(dic.values()))

7-5 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)

输入一个列表,删除其中的重复值,再输出。
要求
假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。
不同元素在列表中的相对位置不应被改变。
输入格式:
[元素1, 元素2, ... , 元素n]
输出格式:
[元素1,元素2, ... , 元素k]
输入样例:

[4,3,2,3,2,4,True]

输出样例:

[3, 2, 4, True]

提示:将形如"[1,3,5]"的字符串转换成列表可以使用eval()函数。
注意:不要在遍历列表的同时对列表进行增删改操作,这样会引起混乱,导致不正确的结果!
注意,输出格式应与输出样例一致,涉及空格,逗号等。

请接着往下看:你的程序真的对了吗?
多数读者的解题思路是制造一个v列表的复制品以避免在遍历v的同时删除v中的元素。该解决方案可以通过本题设置的全部测试。但这并不意味着该解决方案是“完全正确”的。请尝试下述输入:

[1,7,6,7,7,True,'a',9.8,'a',True]

很遗憾,程序将产生错误的输出:

[6, 7, 9.8, 'a', True]

产生这种意外结果的原因是:在Python里1和True是相等的! 0和False也是相等的! 在使用列表的count()函数,index()函数,remove()函数时,1和True, 0和False被不加区分地对待。
下述代码的执行结果证实了这一点:

v = [1,True,2,True,0,False]
print("count of 1:", v.count(1), ",count of True:", v.count(True))
print("count of 0:", v.count(0), ",count of False:", v.count(False))
print("index of True:",v.index(True), ",index of False",v.index(False))
v.remove(True)
print("after v.remove(True):",v)

其执行结果为:

count of 1: 3 ,count of True: 3     #1,True都同时为1或True
count of 0: 2 ,count of False: 2    #0,False都同时为0或False
index of True: 0 ,index of False 4  #下标0的1被视为True
after v.remove(True): [True, 2, True, 0, False]   #1被当作True移除了

这个问题的完美解决方案,请参考拟出版的《Python编程 实验》一书。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。

参考答案

lst = eval(input())
# 列表 True 和 False强制转换为字符串
# 以解决 0 等价于 False,1 等价于 True 的问题
# 注:不完美,可能存在字符串为 "True" 或 "False"
for i in range(len(lst)):
    if lst[i] is True or lst[i] is False:
        lst[i] = str(lst[i])
# 反转列表
lst.reverse()
result = []
# 从左到右遍历查询值是否存在
for i in lst:
    if i in result:
        # 存在,跳过
        continue
    # 不存在,加入
    result.append(i)
# 再次反转得到实际结果
result.reverse()
# 恢复数值的类型
for i in range(len(result)):
    # 恢复 True 和 False
    if result[i] == "True":
        result[i] = True
    elif result[i] == "False":
        result[i] = False
    # 其他情况不转换
    else:
        pass
# 输出实际结果
print(result)

7-6 词频统计 - 实验11 字典操作及应用 - 《Python编程实验》

从键盘读入由仅由英文构成的多行文本,借助于字典统计其中每个单词出现的次数。然后按字典递增序按格式输出每个单次出现的次数。
要求:

  1. 所有单词不区分大小写,输出时按小写格式输出;
  2. 需要排除! , : ?等英文符号,即这些符号不应作为单词的构成部分;
  3. 需要排除0,1,2,... 9等数字,即这些数字不应作为单词的构成部分。
    输入格式:
    行数n
    第1行内容
    第2行内容
    ....
    第n行内容
    输出格式:
    单词1 单词1出现次数
    单词2 单词2出现次数
    ...
    单词k 单词k出现次数
    注意: 单词1, 2,.... k 按字典递增序。
    输入样例:

    4
    Hello! baby! Jupyter 4 class 
    class ultimately.
    class
    jupyter

    输出样例:

    baby 1
    class 3
    hello 1
    jupyter 2
    ultimately 1

    解题思路: 请参考《Python编程实验》(待出版)。
    该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。

    参考答案

    def format_string(s):
     return s.replace("!", " ").replace(",", " ").replace(".", " ").replace(":", " ").replace("*", " ").replace("?", " ")
    
    
    def is_number(s):
     try:
         float(s)
         return True
     except ValueError:
         pass
     try:
         import unicodedata
         unicodedata.numeric(s)
         return True
     except (TypeError, ValueError):
         pass
     return False
    
    
    dic = {}
    times = int(input())
    for i in range(times):
     string = format_string(input().lower())
     lst = list(map(str, string.split()))
     for item in lst:
         if is_number(item):
             continue
         try:
             value = dic[item]
         except KeyError:
             value = 0
         dic[item] = value + 1
    lst = sorted(dic.keys())
    for item in lst:
     print(item, dic[item])

7-7 求给定范围内所有数字的平方和

本题目要求读入2个整数A和B,然后输出[A,B]之间所有数的平方和。
输入格式:
在一行中给出2个绝对值不超过100的整数A和B。
输出格式:
输出[A,B]之间所有数的平方和。
输入样例:
在这里给出一组输入。例如:

3 5

输出样例:
在这里给出相应的输出。例如:

50

参考答案

a, b = map(int, input().split())
sum = 0
for i in range(a, b + 1):
    sum += i ** 2
print(sum)

7-8 均方差

求n个非负整数x1, x2 …… xn(xi为第i个元素)的均方差,公式如下:

junfangcha.png
junfangcha.png

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入一个整数n(1≤n≤100),再输入n个整数xi(0≤xi≤1000)。
输出格式:
对于每组测试数据,在一行上输出均方差,结果保留5位小数。
输入样例:

2
4 6 7 8 9
10 6 3 7 1 4 8 2 9 11 5

输出样例:

1.11803
3.03974

出处:
ZJUTOJ 1186

参考答案

times = int(input())
for i in range(times):
    lst = list(map(int, input().split()))
    lst.pop(0)
    length = len(lst)
    avg = sum(lst) / length
    temp = 0
    for j in lst:
        temp += (j - avg) ** 2
    import math
    s = math.sqrt(temp / length)
    print("{:.5f}".format(s))

Date: 2021-11-27 01:36