安财《Python语言程序设计》程序设计题
安财《Python语言程序设计》程序设计题
题目如果有缺少,可以私聊我一下,我补上。补充的题目我都放在了最后。
在商场购买某商品时,若所花的钱x在下述范围内,所付钱y按对应的折扣支付:
y={xx<10000.9x1000≤x<20000.8x2000≤x<30000.7xx≥3000\begin{array}{l} y=\left\{\begin{array}{cc} x & x<1000 \\ 0.9 x & 1000 \leq x<2000 \\ 0.8 x & 2000 \leq x<3000 \\ 0.7 x & x \geq 3000 \end{array}\right. \end{array} y=⎩⎪⎪⎨⎪⎪⎧x0.9x0.8x0.7xx<10001000≤x<20002000≤x<3000x≥3000x=eval(input("请输入所花钱x:")) if x>=3000:y=0.7*x elif x>=2000:y=0.8*x elif x>=1000:y=0.9*x else:y=x print("实际应付金额{:.2f}元".format(y))
编写计算分段函数的程序:
y={sinx+x2+1,x>5ex+log5x+x5,0<x≤5cosx−x3+3x,x≤0y=\left\{\begin{array}{ll} \sin x+\sqrt{x^{2}+1}, & x>5 \\ e^{x}+\log _{5}{x}+\sqrt[5]{x}, & 0<x \leq 5 \\ \cos x-x^{3}+3 x, & x \leq 0 \end{array}\right. y=⎩⎨⎧sinx+x2+1,ex+log5x+5x,cosx−x3+3x,x>50<x≤5x≤0
输入x的值,输出函数y的值。#第一种方法: import math x=eval(input("请输入x的值:")) if x>=5:y=math.sin(x)+math.sqrt(x**2+1) elif x>=0:y=math.exp(x)+math.log(x,5)+x**(1/5) else:y=math.cos(x)-x**3+3*x print("分段函数y的值是:",y)
#第二种方法 import math x=eval(input("请输入x的值:")) if x>5:y=math.sin(x)+math.sqrt(x**2+1) elif x>0 and x<=5:y=math.exp(x)+math.log(x,5)+x**(1/5) else:y=math.cos(x)-x**3+3*x print("分段函数y的值是:",y)
#第三种方法 import math x=eval(input("请输入x的值:")) if x>5:y=math.sin(x)+math.sqrt(x**2+1) elif 0<x<=5:y=math.exp(x)+math.log(x,5)+x**(1/5) else:y=math.cos(x)-x**3+3*x print("分段函数y的值是:",y)
编写程序,实现分段函数计算,如下表所示。当x=7,输出y的值。
xxx yyy x<0x<0x<0 000 0⩽x<50\leqslant x<50⩽x<5 xxx 5⩽x<105\leqslant x<105⩽x<10 3x−53x-53x−5 10⩽x<2010\leqslant x<2010⩽x<20 0.5x−20.5x-20.5x−2 20⩽x20\leqslant x20⩽x 000 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)
从键盘上任意输入一个自然数,判断数是否素数。如输入11,则显示:11是素数
n=eval(input("请输入一个自然数:")) tag=True for i in range(2,n):if n%i==0:tag=Falsebreak m="是素数" if tag else "不是素数" print(n,m)
一元二次方程求解
编程求解一元二次方程ax2+bx+c=0,方程中的a,b,c系数从键盘输入(提示:分支嵌套)编程求解一元二次方程a x^2+b x+c=0,方程中的a,b,c系数从键盘输入(提示:分支嵌套)编程求解一元二次方程ax2+bx+c=0,方程中的a,b,c系数从键盘输入(提示:分支嵌套)
注解:注解:注解:
大部分情况下是根据求根公式来求解,即:大部分情况下是根据求根公式来求解,即:大部分情况下是根据求根公式来求解,即:
x=−b±b2−4ac2ax=\frac{-b \pm \sqrt{b^{2}-4 a c}}{2 a}x=2a−b±b2−4ac
判别式:判别式:判别式:
利用一元二次方程的判别式(Δ=b2−4ac)可以判断方程的根的情况。可以判别方程根的情况。利用一元二次方程的判别式(\Delta=b^{2}-4 a c) 可以判断方程的根的情况。可以判别方程根的情况。利用一元二次方程的判别式(Δ=b2−4ac)可以判断方程的根的情况。可以判别方程根的情况。
一元二次方程ax2+bx+c=0(a≠0)的根与根的判别式,有如下关系:一元二次方程a x^2+b x+c=0(a\not=0)的根与根的判别式,有如下关系:一元二次方程ax2+bx+c=0(a=0)的根与根的判别式,有如下关系:
(1)当Δ>0时,方程有两个不相等的实数根;(1)当 \Delta>0 时, 方程有两个不相等的实数根;(1)当Δ>0时,方程有两个不相等的实数根;
(2)当Δ=0时,方程有两个相等的实数根;(2)当 \Delta=0 时, 方程有两个相等的实数根;(2)当Δ=0时,方程有两个相等的实数根;
(3)当Δ<0时,方程无实数根,但有2个共轭复根。(3)当 \Delta<0 时, 方程无实数根, 但有 2 个共轭复根。(3)当Δ<0时,方程无实数根,但有2个共轭复根。import math a=eval(input("A=")) b=eval(input("B=")) c=eval(input("C=")) delta=b**2-4*a*c if a==0:if b==0:print("方程无意义!!")else:x=-c/bprint("方程有单根:",x) else:if delta>0:q=math.sqrt(delta)/(2*a)p=-b/(2*a)x1=p+qx2=p-qprint("两个不相等的实根",x1,x2)elif delta==0:p=-b/(2*a)print("两个相等的实根:",p)else:print("方程无解!")
编程产生菲波拉契数列20项,例如:0 1 1 2 3 5 8 13 21 ……
#第一种方法 x0,x1=0,1 for n in range(0,20):print(x0,end=" ")x2=x1+x0x0=x1x1=x2
#第二种方法 x0,x1=0,1 for n in range(0,20):print(x0,end=" ")x0,x1=x1,x0+x1
猴子摘桃
猴子第一天摘了若干个桃子,当天吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子,问第一天共摘了多少个桃子?
#第一种方法 x=1 for d in range(0,9):x=(x+1)*2 print(x)
#第二种方法 x0=1 for d in range(0,9):x1=(x0+1)*2x0=x1 print(x0)
韩信点兵
韩信点兵的典故:韩信带1500名士兵去打仗,战死四五百人,3人一排多出2人,5人一排多出4人,7人一排多出6人,编程计算剩下
士兵的人数。#第一种方法 for i in range(1000,1101):if i%3==2 and i%5==4 and i%7==6:print('剩下士兵共有{}人'.format(i))
#第二种方法 for i in range(1100,1001,-1):if i%3==2 and i%5==4 and i%7==6:print('剩下士兵共有{}人'.format(i))
#第三种方法 i=1000 while i<=1100:if i%3==2 and i%5==4 and i%7==6:print('剩下士兵共有{}人'.format(i))i=i+1
#第四种方法 i=1100 while i>=1000:if i%3==2 and i%5==4 and i%7==6:print('剩下士兵共有{}人'.format(i))i=i-1
编程分别计算100以内(含100)奇数与偶数的和。
s1,s2=0,0 for i in range(1,101):if i%2==0:s2=s2+ielse:s1=s1+i print("奇数的和是:{},偶数的和是:{}".format(s1,s2))
编程计算前30项的和:s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n)
t,sum=0,0 for i in range(1,31):t = t + isum = sum + t print("多项式前30项的和是:",sum)
给钱问题
一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第2天给2分钱,第3天给4分钱,…,富翁每天给穷人的钱是前一天的两倍,直到满一个月,分别显示富翁给陌生人的钱和陌生人给富翁的钱各是多少?
x0=0.01 s =0 for i in range(1,31):s=s+100000x1=2 * x0x0=x1 print("富翁赚的钱{:.2f},陌生人赚的钱{:.2f}".format(s,x0))
闰年
编写程序,运行后用户输入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')
小球自由落体问题
一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
s=100 h0=100 for i in range(1,10):h1=h0/2s=s+2*h1h0=h1 print("小球一共经过了{:.2f}米,第10次的高度{:.2f}米".format(s,h0))
求阶乘
从键盘输入任意一个正整数,编程计算该数的阶乘 如:输入5,阶乘结果120 。
n=eval(input("请输入一个正整数:")) p=1 for i in range(1,n+1):p=p*i print("n! =",p)
99乘法表
输出如下格式的99乘法表。
1×1=11\times1=11×1=1 2×1=22\times1=22×1=2 2×2=42\times2=42×2=4 3×1=33\times1=33×1=3 3×2=63\times2=63×2=6 3×3=93\times3=93×3=9 4×1=44\times1=44×1=4 4×2=84\times2=84×2=8 4×3=124\times3=124×3=12 4×4=164\times4=164×4=16 5×1=55\times1=55×1=5 5×2=105\times2=105×2=10 5×3=155\times3=155×3=15 5×4=205\times4=205×4=20 5×5=255\times5=255×5=25 6×1=66\times1=66×1=6 6×2=126\times2=126×2=12 6×3=186\times3=186×3=18 6×4=246\times4=246×4=24 6×5=306\times5=306×5=30 6×6=366\times6=366×6=36 7×1=77\times1=77×1=7 7×2=147\times2=147×2=14 7×3=217\times3=217×3=21 7×4=287\times4=287×4=28 7×5=357\times5=357×5=35 7×6=427\times6=427×6=42 7×7=497\times7=497×7=49 8×1=88\times1=88×1=8 8×2=168\times2=168×2=16 8×3=248\times3=248×3=24 8×4=328\times4=328×4=32 8×5=408\times5=408×5=40 8×6=488\times6=488×6=48 8×7=568\times7=568×7=56 8×8=648\times8=648×8=64 9×1=99\times1=99×1=9 9×2=189\times2=189×2=18 9×3=279\times3=279×3=27 9×4=369\times4=369×4=36 9×5=459\times5=459×5=45 9×6=549\times6=549×6=54 9×7=639\times7=639×7=63 9×8=729\times8=729×8=72 9×9=819\times9=819×9=81 for i in range(1,10):for j in range(1,i+1):print("{}*{}={:2d}" .format (i,j,i*j),end=" ")print()
百元百鸡
使用循环方法求解百钱买百鸡问题,假设公鸡5元一只,母鸡3元一只,小鸡1元一只,现在100元钱想买100只鸡,编程计算买鸡的方案,有多少种买法。
s=0 for x in range(1,20): for y in range(1,33): z = 100 - x - y if 5*x + 3*y + z/3 == 100: print('公鸡:%d 母鸡:%d 小鸡:%d'%(x, y, z))s=s+1 print('有以上{}种卖法'.format(s))
使用列表生成式方法求解百钱买百鸡问题。
假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?l=[(i,j,k) for i in range(0,100) for j in range(0,100) for k in range(0,100) if i+j+k==100 and 5*i+3*j+k/3==100] for i in l:print(i)
绘制六边形
用turtle库绘制红色线条的六边形,线条大小5像素,每边长度80。
import turtle turtle.pensize(5) turtle.pencolor("red") for i in range(6):turtle.fd(80)turtle.left(60)
输出效果:
绘制平行四边形
用turtle库绘制平行四边形,相邻两边长度分别为150和80,对角120度和60度,线条粗6像素,颜色为绿色。
#第一种方法 import turtle turtle.pensize(6) turtle.pencolor("green") turtle.fd(150) turtle.left(60) turtle.fd(80) turtle.left(120) turtle.fd(150) turtle.left(60) turtle.fd(80)
#第二种方法 import turtle turtle.pensize(6) turtle.pencolor("green") turtle.fd(150) for i in range(1,4):if i%2==1:turtle.left(60)turtle.fd(80)else:turtle.left(120)turtle.fd(150)
输出效果:
编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,worldx=input("x=") l=x.split(",") l.sort() print(",".join(l))
编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3 Read Python 2 or Python 3
然后,输出应该是:
2:2
3:2
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1x=input("x=") l=x.split() d={} for i in l: d[i]=d.get(i,0)+1 l2=sorted(d) for i in l2: print("{}:{}".format(i,d[i]))
编程:输入一段英文文本,统计该文本中单词的出现次数。比如"How are you.how are you"的统计结果是{“how”:2,“are”:2,“you”:2},要求用函数调用的方法实现。
def wordnum(s):for c in ".,/?:":s=s.replace(c,' ')words=s.lower().split()dic_s={}for word in words:dic_s[word]=dic_s.get(word,0)+1return dic_ss=input("请输入英文文本:") dic_s=wordnum(s) print(dic_s)
依次输入三个整数放在一个列表中,请把这三个数由小到大输出。
l=[] for i in range(3):x=int(input("x="))l.append(x) l.sort() for i in l:print(i,end=" ")
使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}n=eval(input("n=")) d={} for i in range(1,n+1):d[i]=i*i print(d)
使用列表生成式随机产生10个两位的正整数,存入列表ls中,输出ls中的这10个随机数,然后对这10个随机数求平均值,并输出统计高于平均值的数有多少个。
from random import * ls=[randint(10,99) for i in range(10)] print(ls) pj=sum(ls)/10 n=0 for i in ls:if i>pj:n=n+1 print(n)
编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。 获得的数字应以逗号分隔的顺序打印在一行上。
values = [] for i in range(1000, 3001): s = str(i) if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0): values.append(s) print (",".join(values))
编写一个程序,输出2000到3200(含2000和3200)之间所有是7的倍数,但不是5的倍数的整数。要求:用列表保存符合条件的整数,输出结果各整数之间用逗号分隔,并输出在一行上。
l=[] for i in range(2000,3201):if i%7==0 and i%5!=0:l.append(str(i)) print(",".join(l))
编写一个程序,接收一系列单个空格分隔的单词作为输入,在删除所有重复的单词并按字母升序排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice worldx=input("x=") l=x.split() s=set(l) l2=list(s) l2.sort() for i in l2:print(i,end=" ")
编写一个接收句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母 10
数字 3d={'字母':0,'数字':0} x=input("x=") for i in x:if i.isdigit():d['数字']=d['数字']+1elif i.isalpha():d['字母']=d['字母']+1 for k,v in d.items():print("{} {}".format(k,v))
使用列表生成式来求列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
[1,2,3,4,5,6,7,8,9]
然后,输出应该是:
[1, 3, 5, 7, 9]l=eval(input("l=")) l2=[i for i in l if i%2==1] print(l2)
定义函数,将一个四位数的整数的每个数字分离出来,并将四位数返回。主程序要求输入整数,并输出这四个数字。
def fenli(n): n1=int(n/1000) n2=int(n/100%10) n3=int(n/10%10) n4=n%10 return (n1,n2,n3,n4) n=int(input("请输入一个四位数的整数:")) if len(str(n))!=4: print("请输入一个四位数!") else: a,b,c,d=fenli(n) print(a,b,c,d)
已知字符串a=“aAsmr3idd4bgs7Slsf9eAF”,要求编写程序,将字符串中的数字取出,并输出成一个新的字符串。要求用函数实现数字的提取,并返回字符串。
def desp(s): dig_s="" for ch in s: if ch.isdigit(): dig_s+=ch return dig_s s=input("请输入字符串:") print("该字符串中的数字构成的字符串为:",desp(s))
编写一个函数,实现摄氏温度和华氏温度之间的换算,换算公式为F=9C/5+32,要求输入单位是摄氏度的值,能够显示相应的华氏温度值,反之亦然。
def converse(t,n):if n==1:return 9*t/5+32else:return (t-32)*5/9 t=eval(input("请输入温度值:")) n=int(input("请输入1或2,输入1表示输入的是摄氏温度,2表示华氏温度:")) if n==1:print("华氏温度值为:",converse(t,1)) else:print("摄氏温度为:",converse(t,2))
对列表nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]进行排序,将0放到最后。
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4] print(sorted(nums,key=lambda x:1 if x==0 else 0))
用递归方法求数列“1,1,1,3,5,9,17,31……”的前20项(要求每行输出5个数)
def fun(n): if n in (1,2,3): return 1 else: return fun(n-1)+fun(n-2)+fun(n-3) for i in range(1,21): print("{:>8}".format(fun(i)),end=' ' if i%5!=0 else '\n')
用函数调用的方法求:
Cmn=m!n!×(m−n)!C_{m}^{n}=\frac{m !}{n ! \times(m-n) !}Cmn=n!×(m−n)!m!
def fac(n): if n==1 or n==0:return 1else:return n*fac(n-1) m=int(input("请输入正整数m:")) n=int(input("请输入正整数n:")) if m<n:m,n=n,m else:f=fac(m)/(fac(n)*fac(m-n)) print("f=",f)
编写函数showMsg(n,name),它可以输出n行字符串“Happy Birthday ***",如果“***”为小明,则输出n行“Happy Birthday 小明”。
def showMsg(n,name):s="Happy Birthday" +name+"\n"print(n * s) showMsg(10,"小明")
编写函数avg(lst),参数lst是一个列表,它可以返回列表元素的整数平均值return int(sum(lst)/len(lst)),调用avg(lst)函数求每个学生的平均成绩。已知成绩列表s={‘小李’:[77,54,57],‘小张’:[89,66,78],‘小陈’:[90,93,80],‘小杨’:[69,58,93]}。 输出结果:{‘小李’:62,‘小张’:77,‘小陈’:87,‘小杨’:73}。
def avg(lst):return int(sum(lst)/len(lst)) score_dict={'小李':[77,54,57],'小张':[89,66,78],'小陈':[90,93,80],'小杨':[69,58,93]} avg_dict={} for key,value in score_dict.items():avg_dict[key]=avg(value) print(avg_dict)
编写一个函数, 接收字符串参数(其中字符串中包含大小写字母及其他字符), 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数。
def Fun(str): #定义函数,接受一个字符串参数upper = lower = 0 #定义计数器for i in str: #遍历字符串if i.isupper(): #如果为大写字母,upper的值加一upper += 1elif i.islower(): #如果为小写,lower值加一lower += 1else:continue #既不是大写又不是小写,继续执行return upper,lower #返回大写和小写的数值 print(Fun('Hello World!'))
从键盘上任意输入三个数x,y,z,然后比较它们的大小并进行由小到大的排序输出。
x,y,z=eval(input("输入 x,y,z,分别用逗号分隔:")) if x>y:x,y=y,x if y>z:y,z=z,yif x>y:x,y=y,x print("排序后:",x,y,z)
求两个整数m,n的最大公约数,m和n由键盘输入。
m,n=eval(input("请输入两个自然数,用逗号分隔:")) r=m%n while r!=0:m=nn=rr=m%n print("最大的公约数:",n)
编写一个程序,该程序接受控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设向程序提供以下输入:
34岁,67年,55岁,33岁,12日,98年
则输出为:
[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入,方法可以将列表转换为元组。import re #导入正则表达式re模块 values=input('请输入数字序列:') k=re.findall(r'[0-9]+',values) #findall函数将values中匹配到的数字对象导入到列表并返回,k为列表 t=tuple(k) print(k) print(t)
使用for循环依次输入三个整数放在一个列表,请把这三个数由小到大输出。
ls = [] for i in range(3):x = eval(input())ls.append(x) ls.sort() print(ls)
有计算机成绩:{‘张三’: 90, ‘王二’: 88,‘刘五’: 95}和数学成绩:math={‘张三’: 84, ‘李四’: 87, ‘王二’: 93,},把这两门课成绩填入总成绩表:{‘张三’: [0,0], ‘李四’:[0,0], ‘王二’: [0,0],‘刘五’:[0,0]}。总成绩表条目中的值是一个列表,分别存放了计算机和数学成绩,如果某门课没有成绩,默认为0分。
computer = {'张三': 90, '王二': 88,'刘五': 95} math = {'张三': 84, '李四': 87, '王二': 93,} all_courses = {'张三': [0, 0], '李四': [0, 0], '王二': [0, 0],'刘五': [0, 0]} for name in all_courses.keys():if name in computer:all_courses[name][0] = computer[name]if name in math:all_courses[name][1] = math[name] print(all_courses)
使用集合的差集运算,求100以内的质数。
s0 = {i for i in range(1, 101)} s1 = set() s1.add(1) for i in range(2, 101):for j in range(2, i):if i % j == 0:s1.add(i)breakelse:continue s = s0 - s1 print(s)
学校准备从2019级学生(学号:20190001~20195000)中,抽取50名学生代表学校参加某知识竞赛。编写代码实现这个功能。要求:使用集合保存这些学生的学号。
import random num = range(20190001, 20195001) nums = random.sample(num, 50) l = set(nums) print(l)
学生基本信息如下表所示,统计每个年龄的人数,并详细显示每个年龄的学生信息。
姓名 性别 年龄 李明 男 19 杨柳 女 18 张一凡 男 18 许可 女 20 王小小 女 19 陈心 女 19 d = {'李明': ('男', 19), '杨柳': ('女', 18),'张一凡':('男', 18), '许可':('女', 20), '王小小':('女',19), \'陈心':('女',19)} ages = {} di = {} for t in d.values():di[t[1]] = [] for k, v in d.items():ages[v[1]] = ages.get(v[1], 0) + 1di[v[1]].append((k, v[0])) for j in ages:print('{}岁的同学有{}位'.format(j, ages[j])) print('每个年龄的学生信息', di)
下表所示是学生购物调查表。根据该表完成以下任务:
1)分别统计男生、女生每一类消费项目的总金额。
2)分别统计男女人数。结果是一个字典,键是性别,值是性别对应的人数。
3)分别统计男生、女生单类消费金额的最大值。性别 书本 文具 服饰 零食 日用品 女 10 30 300 150 600 女 200 10 300 300 100 男 200 100 1000 100 200 男 50 20 300 100 200 男 200 50 400 100 200 女 100 10 500 150 800 女 200 100 500 300 200 男 300 50 0 10 50 男 100 10 500 40 500 男 200 50 200 100 100 ls = [{'性别':'女','书本':10,'文具':30,'服饰':300,'零食':150,'日用品':600},{'性别':'女','书本':200,'文具':10,'服饰':300,'零食':300,'日用品':100},{'性别':'男','书本':200,'文具':100,'服饰':1000,'零食':100,'日用品':200},{'性别':'男','书本':50,'文具':20,'服饰':300,'零食':150,'日用品':600},{'性别':'男','书本':200,'文具':50,'服饰':400,'零食':100,'日用品':200},{'性别':'女','书本':100,'文具':10,'服饰':500,'零食':150,'日用品':800},{'性别':'女','书本':200,'文具':100,'服饰':500,'零食':300,'日用品':200},{'性别':'男','书本':300,'文具':50,'服饰':0,'零食':10,'日用品':50},{'性别':'男','书本':100,'文具':10,'服饰':500,'零食':40,'日用品':500},{'性别':'男','书本':200,'文具':50,'服饰':200,'零食':100,'日用品':100}]# 1)分别统计男生、女生每一类消费项目的总金额。 male_buy = {} female_buy = {} for dic in ls:for k,v in dic.items():if k != '性别':if dic['性别'] == '男':male_buy[k] = male_buy.get(k,0) + velse:female_buy[k] = female_buy.get(k,0) + v print('男生、女生每一类消费项目的消费总金额如下所示:') print(' ', end = '\t') for key in male_buy.keys():if key != '性别':print(key, end = '\t') print() print('男生', end = '\t') for value in male_buy.values():if key != '性别':print(value, end = '\t') print() print('女生', end = '\t') for value in female_buy.values():if key != '性别':print(value, end = '\t') print()# 2)分别统计男女人数。结果是一个字典,键是性别,值是性别对应的人数。 d_num = {} d_num['男'] = 0 d_num['女'] = 0 for dic in ls:if dic['性别'] == '男':d_num['男'] += 1if dic['性别'] == '女':d_num['女'] += 1 print(d_num)# 3)分别统计男生、女生单类消费金额的最大值。 l = [] d1 = {} d2 = {} for key in ls[0].keys():if key != '性别':l.append(key) for i in l:d1[i] = []d2[i] = [] for d in ls:if d['性别'] == '男':for j in l:d1[j].append(d[j])if d['性别'] == '女':for k in l:d2[k].append(d[k]) print('男生、女生单类消费金额的最大值如下所示:') print(' ', end = '\t') for i in l:print(i, end = '\t') print() print('男生', end = '\t') for i in l:print(max(d1[i]), end = '\t') print() print('女生', end = '\t') for i in l:print(max(d2[i]), end = '\t')
安财《Python语言程序设计》程序设计题相关推荐
- 嵩天-Python语言程序设计程序题--第四周:程序的控制结构
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第一周:Python基本语法元素
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第二周:基本图形绘制
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第三周:基本数据类型
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第六周:组合数据类型
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第五周:函数和代码复用
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第九周:Python计算生态纵览
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第八周:程序设计方法学
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- 嵩天-Python语言程序设计程序题--第七周:文件和数据格式化
前言:嵩天老师的<Python语言程序设计课程>被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助.因此,我想把自己学习这门课程作 ...
- python语言必刷题——BMI值的计算
本文涵盖了三种基本的BMI计算类型!! 输入身高体重并计算BMI 当前计算BMI的程序中 height, weight 都是固定值,请将程序更改为从键盘获取输入,再计算 BMI. 先输入身高(单位:米 ...
最新文章
- expdp导出数据库实例应用
- 波场DApp数据分析
- 投资互联网+企业级IT呈现三大新趋势
- EMC存储产品分析介绍 (一)
- redis集群信息分析-cluster info-cluster nodes
- IPFS的相关操作命令
- python注册登陆程序未响应_SpringBoot实现登录注册常见问题解决方案
- 深入浅出计算机组成原理04:存储和IO系统
- android关闭人脸检测功能,【Android知识】录像预览模式下打开人脸检测
- IDEA类注释模板设置
- 如何利用信息差赚钱?分享二个案例给你!
- Linux 根分区扩容
- 家电哥回馈社会 心系老人忙公益
- 网易2016研发工程师编程题--完全解析
- Android Google Face API 增强现实教程
- 真实评测:华为nova8和红米k30至尊版哪个好-参数区别对比
- 传奇手游开服教程:怎么开传奇手游?开传奇手游需要准备什么?
- 国内大陆有哪些芯片公司处于世界前10?一起看看!
- JS中的数组空位处理
- 3、Mybatis-Plus异常之There is no getter for property named ‘ew‘ in ‘class解决方案