python练习题
1、有一个存着学生成绩的文件,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下
score={
"1":["小花",99,100,98.5],
"2":["小王",90,30.5,95],
"3":["小明",67.5,49.6,88]
}
import xlwt score={ "1":["小花",99,100,98.5], "2":["小王",90,30.5,95], "3":["小明",67.5,49.6,88] } title=['学号','姓名','语文成绩','数学成绩','英语成绩','总分','平均分'] book=xlwt.Workbook() sheet=book.add_sheet('学生分数') sheet2=book.add_sheet('1') for col,title_name in enumerate(title): sheet.write(0,col,title_name) row=1 for k,v in score.items(): sheet.write(row,0,k) totle_score=sum(v[1:]) sheet.write(row,5,totle_score) sheet.write(row,6,round(totle_score/3,2)) for col,num in enumerate(v,1): sheet.write(row,col,num) col+=1 row+=1 book.save('stu_score.xls')
2、额,来个小插曲,写程序求出1-100的累加和。1+2+3+4+5+.....+100。
num=0 for i in range(1,100): num=num+i print(num)
3、分奇数、偶数:
data=[1,55,33,22,11,99,1001,888,777,222,333] jishu=[] oushu=[] for i in data: if i % 2 ==0: oushu.append(i) else: jishu.append(i) print("奇数组合:",jishu) print("偶数组合:",oushu)
4、假如你要为一个应用搞限时促销,生成激活码(或者优惠券)请用 Python 如何生成 200 个激活码(或者优惠券)。
激活码的格式为asqE-9xRK-lqWU-QkMT
要求1: 使用随机生成时,生成数字概率为1/5,大写字母和小写字母概率各为2/5
要求2: 这200个激活码,他们各不相同
import string import random def act_code(num): code=set() while len(code) != num: code_list = '' for j in range(16): point = random.randint(0,4) if point ==0 or point ==1: lowcode=str(random.sample(string.ascii_lowercase,1)) code_list=code_list+lowcode elif point==2 or point ==3: upcode=str(random.sample(string.ascii_uppercase,1)) code_list = code_list + upcode elif point==4: dcode=str(random.sample(string.digits,1)) code_list = code_list + dcode rep1=code_list.replace('[','').replace(']','') rep2=rep1.replace("'",'') all_code=rep2[0:4]+'-'+rep2[5:9]+'-'+rep2[8:12]+'-'+rep2[12:] code.add(all_code) print(code) act_code(3)
5、冒泡排序
def bubble_sort(items): for i in range(len(items) - 1): for j in range(len(items) - 1 - i): if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] print(list1) return items list1 = [2, 1, 9, 11, 10, 8, 7] print(bubble_sort(list1))
6、有一个文件,里面有一些敏感词汇,如下,如果输入这些词,就用**代替,然后输出,例如输入今天没吃饭,碰到一个傻逼,原来那个sb是小明。输出今天没吃饭,碰到一个**,原来那个**是小明。
s='今天没吃饭,碰到一个傻逼,原来那个sb是小明' fr= open('shabi',encoding='utf-8') for i in fr.readlines(): i_re=i.replace('\n','') if i_re in s: s=s.replace(i_re,'**') #字符串不能修改,所以替换后的字符串要赋给一个新的值 print(s)
6、列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
l=[1,2,3,4,5] def multiplication(num): return num*num result=list(map(multiplication,l)) new_result=[i for i in result if i >10] print(new_result)
7、怎么通过不引入第三方变量的方式,交换两个变量的值?
a=1 b=2 a,b=b,a
8、下面的代码执行结果是什么,为什么?
li = [1,1,2,3,4,5,6,7,8,9] for i in li: if i%2!=0: li.remove(i) print(li) #结果: 1,2,4,6,8
9、下面这段代码的执行结果是什么?
money = 500 def test(consume): return money - consume def test1(money): return test(money)+money money = test1(money) print(money) #结果:500
10、下面这段代码会打印什么,为什么?
def test(): global a a = 5 def test1(): c = a + 5 return c res = test1() print(res) #运行结果会报错, 由于没有定义a,调用是也没有先调用test(),所以在执行test1()时,a是没有定义的
11、现有字符串a="Im Love python",需要变成b="python love Im"
a="Im Love python" b=a.replace('Im','demo').replace('python','Im').replace('demo','python') print(a+'\n',b)
12、