python期末复习题解析

一、填空题

1.Python标准库math中用来计算平方根的函数是__________。

sqrt
计算平方根可以用pow(x,0.5)或者x**0.5,但这里问的是那个函数专门用来求平方根

2.在python中__________表示空类型。

None表示空类型

  1. 列表、元组、字符串是Python的_________(有序?无序)序列。

有序
这里的有序不是指里面的元素递增或递减,而是指下标是有序的

4.查看变量类型的Python内置函数是________________。

type()
type()函数查看变量类型

  1. 查看变量内存地址的Python内置函数是_____________。

id()
id()函数可以查看变量的内存地址

  1. 表达式[1, 2, 3]*3的执行结果为______________________。

[1, 2, 3, 1, 2, 3, 1, 2, 3]

  1. list(map(str, [1, 2, 3]))的执行结果为_____________________。

[‘1’, ‘2’, ‘3’]
map(function, iterable, …)
function是指函数,这里是str,iterable是指可迭代对象,这里是[1,2,3],把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。这里就是把str()作用在列表上,返回一个新列表,其结果就是每个元素变成了str类型

  1. 已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为___________。

(False)
我们可以试一试 在这里插入图片描述
在这里插入图片描述
可以看到3和9已经放到了不相邻的内存地址了

  1. 已知 x = 3,那么执行语句 x *= 6 之后,x的值为____。

(18)

  1. 表达式“[3] in [1, 2, 3, 4]”的值为________________。

(False)

  1. 假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是______________________。

[6, 7, 9, 11]
下标从零开始,左闭右开

  1. 使用列表推导式生成包含10个数字5的列表,语句可以写为_______________。

[5 for i in range(10)]
题目中说用列表推导式,不然可以直接写成[5]*10

  1. 假设有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_____________________。

c = dict(zip(a, b))
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
在这里插入图片描述

  1. 任意长度的Python列表、元组和字符串中最后一个元素的下标为________。

-1

  1. Python语句’’.join(list(‘hello world!’))执行的结果是____。

‘hello world!’
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
在这里插入图片描述
但这里’hello world!'是不用符号去join,所有还是原样

  1. 转义字符’\n’的含义是___________________。

回车换行

  1. Python语句list(range(1,10,3))执行结果为____________。

[1, 4, 7]

  1. 切片操作list(range(6))[::2]执行结果为________________。

[0, 2, 4]

  1. 表达式 ‘ab’ in ‘acbed’ 的值为________。

False

  1. Python 3.x语句 print(1, 2, 3, sep=’:’) 的输出结果为________。

1:2:3

  1. 表达式 int(4**0.5) 的值为____________。

2

  1. 达式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为____________。

[111, 33, 2]
sorted(iterable, cmp=None, key=None, reverse=False)
iterable – 可迭代对象。
cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
这里key可看成是比较的一种方法,key是指求字符串x的相反数,用这个key值进行比较,111的key值是-3,2的key值是-1,33的key值是-2,
排序应该是-3,-2,-1,对应的就是[111,33,2]

  1. 已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式 max(x) 的值为__。

‘3’
为什么是‘3’而不是’11‘呢?
要注意的是这里的不是数字,而是字符串,字符串的比较先从第一位开始,如果第一位相等,在比较第二位,题中第一位先进行比较,应该是’1‘,’2‘,’3’,当然是‘3’开头的大。

  1. 表达式 min([‘11’, ‘2’, ‘3’]) 的值为_________________。

‘11’
和上一题相同只是这个是比较谁更小

  1. 已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式max(x, key=len) 的值__。

‘11’
给出了key ,那就是比较key的值,这题的key给出的方法是求长度(元素个数),分别求一下key值,为2,1,1,所以最大的应该是‘11’

  1. 语句 x = (3,) 执行后x的值为_______________。

(3,)
tuple类型

  1. 语句 x = (3) 执行后x的值为________________。

3
int 类型

  1. x = {1:2},那么执行语句 x[2] = 3之后,x的值为________________。

{1: 2, 2: 3}

  1. 字典对象的_____________方法返回字典中的“键-值对”列表。>items()

  2. 使用列表推导式得到100以内所有能被13整除的数的代码可以写作____________。

[i for i in range(100) if i%13==0]

  1. 表达式 3 ** 2 的值为_________。

9

  1. 表达式 3 * 2的值为___________。

6

  1. 已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为______________。

[3, 5, 7, 1, 2]
len(x)为3
x[len(x):]就是x[3:],表示在第3个无素后添加1,2

  1. 表达式 list(zip([1,2], [3,4])) 的值为_______________。

[(1, 3), (2, 4)])
zip()函数上面的题目介绍过了

  1. 已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为_____。

[1, 2, 3, 2]
pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

  1. 表达式 [x for x in [1,2,3,4,5] if x<3] 的值为______。

[1, 2]

  1. 表达式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为__________________。

[2, 4]
index指下标
这里的max应该是7,也就是说如过值等于7,就把下标加入到列表中

  1. 已知 path = r’c:\test.html’,那么表达式 path[:-4]+‘htm’ 的值为_____。

‘c:\test.htm’
一个简单的对字符串的操作,值得注意的是,下标从右往左数的时候是从-1开始的,而不是从0开始

  1. 表达式 ‘%d,%c’ % (65, 65) 的值为________。

‘65,A’
65对应的字符是A

  1. 表达式 ‘The first:{1}, the second is {0}’.format(65,97) 的值为_______。

‘The first:97, the second is 65’
1和0可以看成是下标

  1. 表达式 ‘:’.join(‘abcdefg’.split(‘cd’)) 的值为______________。

‘ab:efg’
在cd处将字符分为两部分,在用:把这两部分连接

  1. 表达式 isinstance(‘abcdefg’, str) 的值为____________。

True
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。 判断给的数据是否与给的类型相一致

  1. 表达式 ‘Hello world. I like Python.’.find(‘python’) 的值为__。-

-1
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

  1. 表达式 ‘,’.join('a b ccc\n\n\nddd '.split()) 的值为__________。

‘a,b,ccc,ddd’
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
默认以空格为分隔符,包含 \n
还可以指定num的值来规定分隔次数,默认为-1,分隔所有

  1. 已知 x = ‘123’ 和 y = ‘456’,那么表达式 x + y 的值为____。

‘123456’

  1. 表达式 ‘abcab’.replace(‘a’,‘yy’) 的值为___________。

‘yybcyyb’
把‘a’替换为’yy’

  1. 已知 table = ‘’.maketrans(‘abcw’, ‘xyzc’),那么表达式 ‘Hellow world’.translate(table) 的值为______________________。

‘Helloc corld’
str.translate(table[, deletechars])
Python translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 del 参数中。
table – 翻译表,翻译表是通过maketrans方法转换而来。
deletechars – 字符串中要过滤的字符列表。
在本题,就是把’a’替换为’x’,‘b’替换为’y’,‘c’替换为’z’,‘w’替换为’c’

  1. 已知x = {‘b’:1, ‘a’:2},那么执行语句x.update({‘a’:3, ‘d’:4})之后,表达式sorted(x.items())的值为____________________。

[(‘a’, 3), (‘b’, 1), (‘d’, 4)]

  1. 已知x = list(range(20)),那么语句print(x[100:200])的输出结果为_______________。

[]

  1. 表达式sorted({‘a’:9, ‘b’:3, ‘c’:78}.values())的值为_____________。

[3, 9, 78]
取出值之后还要排序

  1. type(1+2*3.14)的结果是:_____________。

<class ‘float’>

二、阅读程序

  1. 写出下面代码的执行结果。
def Join(List, sep=None):	
	return (sep or ',').join(List)
print(Join(['a', 'b', 'c']))
print(Join(['a', 'b', 'c'],':'))

a,b,c
a: b :c
第二行没有空格,不留空格,两个冒号会变成🅱️

  1. 若k为整数,下述while循环执行的次数为:
k=1000
while k>1:
     print(k)
     k=k//2

9次
在这里插入图片描述
这里看得出是执行了10次的,但为什么是9次呢,答案是在第9次的3.90625后k/2的结果是1.93125,题目规定的k是整数,取整后就是1,此时第10次不会再进行了、

  1. 写出下面代码的运行结果。
def Sum(a, b=3, c=5):
    return sum([a, b, c])
print(Sum(a=8, c=2))
print(Sum(8))
print(Sum(8,2))

13
16
15
b,c是有默认值的,当不给定bc值的时候,就取默认值

  1. 写出下面代码的运行结果。
i=1
while i+1:
   if i>4:
      print("%d"%i)
      i+=1
      break
   print("%d"%i)
   i+=1
   i+=1

1
3
5
需要注意的只有 while i+1:这个地方的 i 的值不会改变

  1. 写出下面代码的运行结果
def Sum(*p):
    return sum(p)
print(Sum(3, 5, 8))
print(Sum(8))
print(Sum(8, 2, 10))

16
8
20
*p指传入一个序列
**p就是传入一个字典

  1. 写出下面代码的运行结果
s = 0
for i in range(1,101):
    s += i
else:
    print(1)

1

  1. 写出下面代码的运行结果
s = 0
for i in range(1,101):
    s += i
    if  i == 50:
        print(s)
        break
else:
    print(1)

1275
当for循环正常结束时,才会执行else语句,在本题,当i=50时,通过break结束循环,不会执行else语句

  1. 写出下面代码的运行结果
x = list(range(10))
for index, value in enumerate(x):
    if value == 3:
        x[index] = 5
else:
    print(x)

[0, 1, 2, 5, 4, 5, 6, 7, 8, 9]
这个循环是指找到值为3的元素,并把值改为5

9.阅读下面的代码,解释其功能:

import string
x = string.ascii_letters +string.digits
import random
print(''.join(random.sample(x,10)))

输出由英文字母大小写或数字组成的长度为10且不重复的随机字符串

10.写出下面代码的运行结果

def demo():
    x = 5
x = 3
demo()
print(x)

demo()里的x是demo()函数的局部变量,demo()函数结束这个x被回收,与要执行的x不是同一个

11.写出下面代码的运行结果

def demo(lst, k):
    if k < len(lst):
        return lst[k:] + lst[:k]
lst=[1,2,3,4,5,6]
demo(lst,4)

[5, 6, 1, 2, 3, 4]
返回一个列表,将传进来的列表在k处前后交换

12.写出下面代码的运行结果

def foo(s):
   if s=="":
      return s
   else:
      return s[1:]+s[0]
print (foo('Happy New Year!'))

appy New Year!H
把字符串的第一个元素放到最后

13.写出下面代码的运行结果

l1=[1,2,3,6,87,3]
l2=['aa','bb','cc','dd','ee','ff']
d={}
for index in range(len(l1)):
    d[l1[index]]=l2[index]
print(d)

{1: ‘aa’, 2: ‘bb’, 3: ‘ff’, 6: ‘dd’, 87: ‘ee’}
d是一个字典,for循环就是给字典赋值的过程,以L1为key,以L2为value

14.写出下面代码的运行结果

list1=[1,2]
list2=list1[::]
list1[0]=3
print(list1,list2)

[3, 2] [1, 2]
list1[::]就是list1整体,但如果是list1[::-1]就是把list1逆序

15.写出下面代码的运行结果

age, subject,college=(24,"计算机","非重点")
if (age > 25 and subject=="电子信息工程") or (college=="重点" and subject=="电子信息工程" ) or (age<=28 and subject=="计算机"):
    print("恭喜,你已获得我公司的面试机会!")
else:
   print("抱歉,你未达到面试要求")

恭喜,你已获得我公司的面试机会!
满足第三个条件

16.写出下面代码的运行结果

for num in range(2,10):
   if num % 2 == 0:
      continue
   print("Find a odd numer", num)

Find a odd numer 3
Find a odd numer 5
Find a odd numer 7
Find a odd numer 9

17.写出下面代码的运行结果

for i in range(1, 7):
   print(' ' * 2 * (6 - i), end='')
   for j in range(i, 0, -1):
      print(j, end=" ")
   print()

在这里插入图片描述
他这个地方打不出这么多空格,只能放截图了
第一个print控制空格
第二个print控制数字
第三个输出换行,print的end参数默认是换行

  1. 下面程序输入>>>rev(‘I love you’)返回值为
def rev1(s):
    s=s.split()
    s1=' '.join(reversed(s))
   return s1

you love I
先按空格分成[I,love,you]三部分,再把这三部分逆序,然后用空格把三部分连接起来

  1. 阅读程序,打印结果是
def addInterest(balance,rate):
    newBalance=balance*(1+rate)
    balance=newBalance
def main():
    amount=1000
    rate=0.05
    addInterest(amount,rate)
    print (amount)
main()

1000
amount传进去就是形参了,形参的改变不会引起实参的改变,看一眼就知道是1000

  1. 阅读程序,打印结果是
def demo(newitem,old_list=[]):
    old_list.append(newitem)
    return old_list
def main():
    print(demo('a'))
    print(demo('b'))
main(

[‘a’]
[‘a’, ‘b’]
'a’传入后old_list就有元素a了,把’b’传进去就有[‘a’,‘b’]了

  1. 阅读程序,打印结果是
def func5(a, b, *c):
   print(a, b)
   print("length of c is %d, c is " % len(c), c)
func5(1, 2, 3, 4, 5, 6)

1 2
length of c is 4, c is (3, 4, 5, 6)

  1. 阅读程序,打印结果是
def demo(*para):
    avg = sum(para)/len(para)
    g = [i for i in para if i>avg]
    return (avg,)+tuple(g)
print(demo(1,2,3,4))

(2.5, 3, 4)
demo()函数的意思是先求出传入元素的平均值,返回由平均值和大于平均值的元素组成的元组

  1. 阅读程序,打印结果是
def f(w=1,h=2):
   print(w,h)
f()
f(w=3)
f(h=7)
f(a=3)

1 2
3 2
1 7
错误
最后这个报错信息明显不是打印一个错误,但答案就是这么写的,我们就不多纠结了

  1. 阅读程序,打印结果是
def sort(number1,number2):
   if number1<number2:
      return number1,number2
   else:
      return number2,number1
n1,n2=sort(3,2)
print('n1 is ',n1)
print('n2 is ',n2)

n1 is 2
n2 is 3

  1. 阅读程序,打印结果是
def demo(m, n):
    if m>n:
        m, n = n, m
    p = m*n
    while m!=0:
        r = n%m
        n = m
        m = r
    return (n,p//n)
print( demo(20, 30)

(10, 60)
注意输出格式,返回的是一个元组

三、 程序填空题

  1. 下面代码的功能是,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。请把缺少的代码补全
import random
x = [random.____________(1,20) for i in range(_______)]
r = dict()
for i in x:
    r[i] = r.get(i, _____)+1
for k, v in r.items():
   print(k, v)

分别填写randint、50、0
randint用于产生随机整数,
字典的get()方法,是通过键名找对对应的值,这里通过把x的元素当作键名,把找到的次数当作值,每找到一次,value就加一,一次得到每个整数对应的频率

  1. 生成包含1000个随机字符的字符串,然后统计前20个高频字符,最后以15个位左对齐输出高频字符,以5个位右对齐输出个数。请把缺少的代码补全。
import random
_____________
x = string.ascii_letters + string.digits + string.punctuation
y = [__________for i in range(1000)]
d = dict()
for ch in y:
   d[ch] = d.get(ch, 0) + 1
items = list(d.items())
items.sort(_________, reverse = True)
for i in range(20):
   word,count = items[i]
   print(________ % (word, count))
  1. import string
  2. randmo.choice(x)
    #随机选择序列x的一个元素
  3. key= lambda x:x[1]
    #这里的x指items的每个元素,每个x又是一个元组,x[1]就是每个元组的第二个元素,元组的第一个元素是字符,第二个是字符对应的次数,从而实现通过次数的多少来实现排序
  4. “%-15s%5d”
  1. 用户输入5,打印如右图字符金字塔图形,请补全代码:
    在这里插入图片描述
n = input('输入行数:')
____________
for i in range(1, n + 1):
   print(_______, end = '')
   for j in range(1, 2 * i):
      print('&',___________ )
   print()
  1. n=int(n)
  2. ’ '*(n-i)
  3. end=’’
  1. 质因数分解,如输入60,则得到60 = 2 * 2 * 3 * 5. 请补全代码:
x = eval(input("请输入小于1000的整数:"))
k = 2
_________________
while x > 1:
   if_________:
      print(k, end=" ")
      x = x // k
      if x > 1:
         print("*", end=" ")
   else:
      __________
  1. print(x,’=’,end=’’)
  2. x%k==0
  3. k+=15.
  1. 验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和,请补全代码。
import math
x = eval(input("输入一个数"))
while x < 6 or x % 2 == 1:  # 大于6的偶数
   x = eval(input("输入一个数"))
   for n1 in___________:
      m1 = int(math.sqrt(n1) + 1)
   for i in range(2, m1):  # 2-sqrt(n1)
      if_________:
         break
   else:
      ___________
      m2 = math.ceil(math.sqrt(n2) + 1)
      for j in range(2, m2):
         if n2 % j == 0 and j < n2:
            _____________
         else:
            print(x,'=',n1,'+',n2)
  1. range(3,x//2,2)
  2. n1%i==0
  3. n2 = x - n1
  4. break
  1. 右对齐九九乘法表,请补全代码
    在这里插入图片描述
for i in range(1, 10):
   ___________________
      s1 = str(i) + '×' + str(j) + '=' + str(i * j)
      print(________________)
   print()
  1. for j in range(1,i+1):
  2. ‘%8s’%(s1),end=’’
  1. 输出右边图形,请补充程序
    在这里插入图片描述
for i ————————————————:
   print((' * ' * (2 * i-1)).center(30))
for i in range(6, 0, -1):
   print(——————————————————)
  1. in range(6)
  2. (’ * ’ * (2 * i-1)).center(30)

前5行由第一个for循环控制

  1. 下面代码判断回文串,请补全代码:
s = '雾锁山头山锁雾'
low = 0
high =____________
while low < high:
   if__________:  # 倒序和顺序不一样
      print(s, "不是回文")
      __________
   low += 1
   _______________
else:
   print(s, "是回文串")
  1. len(s)-1
  2. s[low]!=s[jhigh]
  3. break
  4. high-=1
  1. 输出右边图形,请补充程序
    在这里插入图片描述
s='''I am a teacher! You are students!'''
print('='*30)
print('统计信息'.center(28))
print(_____________)
item_width=25
line=s.count('\n')+1
word=s.split()
char=list(s)     #包含空格、标点符号
w_num=0
for w in word:
   w_num+=____________
print('%-*s %5d'%(item_width-3,'行数',line))
print('%-*s %5d'%(_______________,'单词数',len(word)))
print('%-*s %5d'%(item_width-10,'字符数(包含空格)',_____________))
print('%-*s %5d'%(item_width-11,'字符数(不包含空格)',w_num))
print('-'*30)
  1. ‘_’*30
  2. len(w)
  3. item_width-4
  4. len(char)

通过上下文的提示可知
item_width用来制定输出大小
line用于求行数
char是该字符串转化的列表
word是字符串的单词
w_num通过求每个单词的长度叠加求得字符数(不含空格)

  1. 输出右边图形,请补充程序
    在这里插入图片描述
def demo(t):
   print([1])
   ______________
   line = [1, 1]
   for i in range(2, t):
      _______________
      for j in range(0, len(line) - 1):
         r.append(______________)
      line = [1] + r + [1]
      print(line)
demo(__________)
  1. print([1,1])
  2. r=[]
  3. line[j]+line[j+1]
  4. 10

老杨辉三角了

四、 编程题

  1. 编写程序,在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world。
fp = open(r'D:\test.txt', 'a+')
print('hello world', file=fp)
fp.close()
  1. 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片和sort排序函数。)
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[::2]
y.sort(reverse=True)
x[::2] = y
print(x)

通过[;;2]的方法把偶数下标对应的元素提取出来,先排好序在直接修改x列表的值

  1. 编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。再编写测试函数。
import math
def IsPrime(v):
    n = int(math.sqrt(v)+1)
    for i in range(2,n):
        if v%i==0:
            return 'No'
    else:
        return 'Yes'
print(IsPrime(77))

sqrt()函数是求平方根
最后的测试可以是其它数字

  1. 编写函数,模拟Python内置函数sorted(lst)。
def sorted(v):
    t = v[::]
    r = []
    while t:
        tt = min(t)
        r.append(tt)
        t.remove(tt)
    return r
print(sorted([1,3,2,4]))

先选出最小的,加入到列表r中,再把这个最小的剔除,重复上述步骤,返回r列表

  1. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[0:10]
y.sort()
x[0:10] = y
y = x[10:20]
y.sort(reverse=True)
x[10:20] = y

还是sort()函数好,数据结构的什么冒泡排序,简单选择排序,希尔排序,快速排序学得脑阔痛

  1. 编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年
x = input('Please input an integer of 4 digits meaning the year:')
x = eval(x)
if x%400==0 or (x%4==0 and not x%100==0):
    print('Yes')
else:
    print('No')
  1. 编写程序,实现分段函数计算,如下表所示。
    在这里插入图片描述
x = input('Please input x:')
x = eval(x)
if x<0 or x>=20:
    print(0)
elif 0<=x<5:
    print(x)
elif 5<=x<10:
    print(3*x-5)
elif 10<=x<20 :
   print(0.5*x-2)
  1. 已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找最高分同学,最后打印最高分、最低分、平均分、最高分同学。
scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40, "Zhou Liu": 96, "Zhao Qi": 65, "Sun Ba": 90, "Zheng Jiu": 78, "Wu Shi": 99, "Dong Shiyi": 60}
highest = max(scores.values())
lowest = min(scores.values())
average = sum(scores.values())/len(scores)
highestPerson = [name for name, score in scores.items() if score == highest] #分行
print(highest,lowest,average,highestPerson)
  1. 统计不及格的学生及成绩,要求:给定一些学生姓名和成绩;询问用户是否还需要输入更多的学生姓名和成绩,用户回答是就继续输入,继续询问;打印所有补考学生名单和成绩。
d=[["张三",76],["李四",45],["王五",83],["郑六",66],['a',54],['c',68],['b',89]]
s1=input("输入数据Y or N:").strip()#去掉前后空格
while s1 == 'Y':
    s2=input("请输入学生及成绩(空格隔开)")
    name,grade=s2.split()
    d.append([name,grade])
    #d[name]=int(grade)
    s1=input("继续输入Y or N:").strip()
else:    
    print(d) 
print("不及格的名单:")
for name,grade in d:
    if float(grade) < 60:
             print("姓名:",name,"\t","成绩:",grade)
  1. 由用户一个一个输入一个数值型列表,然后将每个元素逐一打印。
lst=[]
n=eval(input('请输入数字个数:'))
for i in range(n):
     number=eval(input('请输入数字:'))
     lst.append(number)
for value in lst:
    print(value,end=' ')
  1. 序列求和,n通过用户输入:
    在这里插入图片描述
n=int(input("请输入N的值:"))
s=0
fh=1
for i in range(1,n+1):
   s += fh * 1 / i  # 求和语句
   fh = -fh  # 正负交替
print("1-1/2+1/3-1/4...+(-1)^(n-1)/n=",s,i)
  1. 生成一个包含50个两位随机整数的列表,然后删除其中的所有奇数(提示从后向前删)
import random
lst=[random.randint(1,100) for i in range(50)]
print('50个随机两位整数:',lst)
k=len(lst)-1
for i in range(k,-1,-1):#从后往前删,减少列表元素移动
    if lst[i] % 2==1:
         lst.pop(i)
print("偶数为",lst)
  1. 恺撒(kaisa)密码:原文ABCDEFGHIJKLMNOPQRSTUVWXYZ,对应的密文为:DEFGHIJKLMNOPQRSTUVWXYZABC,请设计程序实现之。
plaincode = input('请输入明文:')
for p in plaincode:
   if 'a' <= p <= 'z':
      c = chr(ord('a') + (ord(p) - ord('a') + 3) % 26)
      # ord是字符编码的值,都减掉ord('A')才可以得到字符的顺序0-25
      print(c, end='')
   elif 'A' <= p <= 'Z':
      c = chr(ord('A') + (ord(p) - ord('A') + 3) % 26)
      print(c, end='')
   else:
      print(p, end='')
  1. 如果一个字符串从前往后和从后往前读时是一样的,那么这个字符串就是回文串。请编写一个函数判断是否为回文串,同时编写测试代码检验回文串。(提示使用切片,注意列表索引的使用)
def isPalindrome(s):
   if s == s[::-1]:  # 切片操作,倒序和顺序一样
      return True
   else:
      return False

s=input('input a string:')
if  isPalindrome(s):
   print('%s is a palindrome!'  % s)
else:
   print('%s is not a palindrome!'%s)
  1. 输入一串字符,统计每个字符数,用字典输出.
s=input("输入一行字符串或句子:")
char_counts={}
for char in s:
        char_counts[char]= char_counts.get(char,0)+1
print(char_counts)
  1. 生成包含100个随机字符的字符串,然后统计前20个高频字符.
import string,random
str1=string.ascii_letters +string.digits
str1=str1.lower()
str2=[random.choice (str1) for i in range(100)]
print(str2)
str_count={}
for char in str2:
    str_count[char]=str_count.get(char,0)+1
print(str_count)
items=list(str_count.items())
items.sort(key=lambda x:x[1],reverse=True)   #以数量降序
for i in range(20):
   word, count = items[i]
   print("%-15s  %5d" % (word, count))  # -表示左对齐,s表字符,d表示整数
  1. 编程,如图,在文件score.txt中写入五名学生的姓名、学号和3门考试课的成绩,然后将所有两门以上(含两门)课程不及格的学生信息输出到文件bad.txt、其他学生信息输出到pass.txt。

在这里插入图片描述

fw = open(r'score2.txt', 'w')
s = ['张三,', ' 2017010101,', ' 66,', ' 77,', ' 88', '\n']
fw.writelines(s)
fw.write('李四, 2017010102, 60, 70, 80\n')
fw.write('王五, 2017010103, 64, 73, 82\n')
fw.write('赵六, 2017010104, 56, 67, 48\n')
fw.write('钱七, 2017010105, 46, 57, 68\n')
fw.close()

f1 = open(r'score2.txt', 'r')
f2 = open(r'bad2.txt', 'w')
f3 = open(r'pass2.txt', 'w')

lines = f1.readlines()
for line in lines:
   data = list(line.split(','))
   print(data)  # ['张三', ' 2017010101', ' 66', ' 77', ' 88\n']
   k = 0
   for i in data[2:]:
      if int(i) < 60:
         k += 1
   if k >= 2:  # 两门以上(含两门)课程不及格
      f2.write(line)
   else:
      f3.write(line)
f1.close()
f2.close()
f3.close()
  • 175
    点赞
  • 1024
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

unseven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值