1.名单去重,集合的基本操作
【问题描述】
录入两份学生名单,采用集合的特点去掉重名,输出同时出现在两个名单里的人,输出两份名单里所有的人(去掉重名)
【样例输入】
William,Jefferson,Clinton,George,Bush,George
Jack,Jefferson,Lee,George,Wang,Jefferson
【样例输出】
['George', 'Jefferson']
['Bush', 'Clinton', 'George', 'Jack', 'Jefferson', 'Lee', 'Wang', 'William']
【样例说明】
输入分别是以逗号分隔开的学生名单
输出第一行:同时出现在两份名单中的人,升序排列
输出第二行:两份名单中的所有人,升序排列
代码:
StudentList1 = input().split(',')
StudentList2 = input().split(',')
StudentSet1,StudentSet2 = set(StudentList1),set(StudentList2)
set1 = StudentSet1&StudentSet2 #得到同时出现在两份名单中的人
set2 = StudentSet1|StudentSet2 #得到两份名单中的所有人
print(sorted(list(set1)))
print(sorted(list(set2)))
2.题库:提取学生信息和平均成绩
【问题描述】
录入学生的基本信息,取得学生的姓名、性别和平均成绩(科目数量不确定,但至少有一项)
【样例输入】
'2001001','Zhang San','male',65,False,[76,90,85]
【样例输出】
('Zhang San', 'male')
83.67
【样例说明】
输入分别是以逗号分隔开的学号,姓名,性别,年龄,是否少数民族,成绩表
输出第一行:元组形式表示的学生姓名和性别
输出第二行:该生的平均成绩,保留两位小数
代码:
student = eval(input())
info = (student[1],student[2])
avg = sum(student[-1])/len(student[-1])
print(info)
print("%.2f"%avg)
3.题库:列表元素循环右移一位
【问题描述】
以下列表里所有元素循环右移一位。请补充函数体。
【输入形式】
输入列表的元素,以逗号隔开
【输出形式】
循环右移一位后的列表
【样例输入】
1,2,3,4,5
【样例输出】
['5', '1', '2', '3', '4']
【样例说明】
因为样例是通过键盘输入的,所有元素均为字符串形式。
代码:
def shift(lst):
lst.insert(0,lst.pop())
list1 = input().split(",") #输入格式 1,2,3,4,5
shift(list1)
print(list1)
4.题库:本金与年利率
【问题描述】李先生有本金N元(N>=10000)存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算M年后,获得的本金是多少?
【输入形式】输入一行,内容为以空格分隔的两个正整数N和M。
【输出形式】输出李先生所获得的本金,结果保留小数点后四位。
【样例输入】10000 5
【样例输出】10150.9027
代码:
def main():
N,M = map(int,input().split())
calculate_capital(N,M)
def calculate_capital(N,M):
for x in range(M):
N = N*(1+0.003)
print(f"{N:.4f}")
main()
5.题库:卖西瓜
【问题描述】农夫有N(N大于0)个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完?
【输入形式】输入一个正整数N,表示农夫拥有的西瓜数。
【输出形式】输出一个整数,表示农夫卖完全部瓜所需要的天数。
【样例输入】10
【样例输出】2
【样例说明】农夫有10个瓜,第一天卖出(5+2)个,剩余3个;第二天卖出(1+2)个,剩余0个。注:农夫只卖整瓜!
代码:
def main():
total_count = int(input())
calculate_days(total_count)
def calculate_days(total_count):
a = 0
while total_count>0:
if total_count%2 == 0:
total_count = total_count-total_count/2-2
else:
total_count = total_count-(total_count-1)/2-2
a = a + 1
print(a)
main()
6.题库:多项求和
【问题描述】求s=a+aa+aaa+aaaa+aaaaa+aa...a的值,其中a是一个数字,表示s由几个数相加。例如当a=3时,s等于三个数相加的和,即s=3+33+333=369。
【输入形式】从键盘输入一个正整数a。
【输出形式】输出此时s的值。
【样例输入1】3
【样例输出1】369
【样例输入2】10
【样例输出2】10203040506070809100
代码:
def main():
a=int(input())
calculate_sum(a)
#第一种:
def calculate_sum(a):
b = str(a)
d = 0
for x in range(a):
c = b + b*x
c = int(c)
d = d + c
print(d)
#第二种:
def calculate_sum(a):
sum = 0
t = 0
tt = len(str(a))
for x in range(a):
t = t*(10**tt) + a
sum = sum + t
print(sum)
main()
7.题库:计算e
【问题描述】编写程序使用下列公式计算e。e=1+1/1!+1/2!+1/3!+…+1/n!
【输入形式】输入一个正整数n。
【输出形式】输出对应的e的值,结果保留小数点后六位有效数字
【样例输入】10
【样例输出】2.718282
代码:
def main():
num = eval(input())
calculate_e(num)
def calculate_e(num):
e = 1
a = 1
for x in range(1,int(num)+1):
a = a*1/x
e = e + a
print(f"{e:.6f}")
main()
8.题库:偶数和
【问题描述】编程实现:从 0 开始到 n(n>0,包括n) 以内的所有偶数之和
【输入形式】输入一个正整数n
【输出形式】结果以整数形式输出
【样例输入】10
【样例输出】30
代码:
n=eval(input())
h1=0
for x in range(n+1):
if x%2==0:
h1 = h1 + x
print(h1)
9.题库:整数的各位数字之和
【问题描述】输入一个整数,求该整数的各位数之和
【样例输入】123
【样例输出】6
代码:
n=eval(input())
sum1=0
while n>0:
sum1 += n%10
n = int((n-n%10)/10)
print(sum1)
10.题库:是否包含数字5
【问题描述】输入一个整数,求该整数上的各位数是否包含数字5,若有,则按从低到高的顺序输出第几位,若没有则输出-1
【输入形式】
【输出形式】每一行代表包含数字5的位数
【样例输入】
1223
【样例输出】
-1
【样例输入】
125
【样例输出】
1
【样例输入】
525
【样例输出】
1
3
代码:
n=int(input())
j=1
b=-1
flag=False
while n>0:
if n%10==5:
print(j)
flag = True
n=n//10
j+=1
if flag==False: #还可以写: not flag
print(b)
11.题库:二月的天数
【问题描述】
二月通常有28天,但如果是闰年,二月就有29天。 请编写一个程序,根据用户输入的年份计算当年2月的天数并输出,其中,判断闰年请用自定义函数实现。 提示:能被400整除的是闰年,能被4整除但是不能被100整除的也是闰年
【输入形式】
整数(代表年份)
【输出形式】
In 【年份】 February has [29 or 28] days.
【样例输入】
2021
【样例输出】
In 2021 February has 28 days.
代码:
def leapyear(x):
return (x%400 == 0 or (x%4 == 0 and x%100 != 0))
year=int(input())
if leapyear(year):
print("In %d February has 29 days."%year)
else:
print("In %d February has 28 days."%year)
12.题库:计算个人所得税和工资
【问题描述】
应纳个人所得税税额= 应纳税所得额× 适用税率- 速算扣除数
扣除标准5000元/月(2019年1月1日起正式执行)(工资、薪金所得适用)
个税免征额5000元 (工资薪金所得适用)
级数全年应纳税所得额 税率(%)速算扣除数
1不超过36,000元 3 0
2超过36,000元至144,000元的部分 10 2,520
3超过144,000元至300,000元的部分 20 16,920
4超过300,000元至420,000元的部分 25 31,920
5超过420,000元至660,000元的部分 30 52,920
6超过660,000元至960,000元的部分 35 85,920
7超过960,000元的部分 45 181,920
输入一个人年薪,根据公式,计算出个人所得税,以及税后年薪
【输入形式】
年薪
【输出形式】
个人所得税
税后年薪
【样例输入】
180000
【样例输出】
9480.00
170520.00
代码:
salary = float(input())
tax = 0.0
salary -= 5000*12
if salary <= 0:
tax = 0.0
elif salary <= 36000:
tax = salary * 0.03
elif salary <= 144000:
tax = salary * 0.1 - 2520
elif salary <= 300000:
tax = salary * 0.2 - 16920
elif salary <= 420000:
tax = salary * 0.25 - 31920
elif salary <= 660000:
tax = salary * 0.3 - 52920
elif salary <= 960000:
tax = salary * 0.35 - 85920
else:
tax = salary * 0.45 - 181920
salary = salary - tax + 5000*12
print("%.2f"%tax)
print("%.2f"%salary)
13.题库:加密数据
【问题描述】加密数据。从键盘输入一段数字, 加密规则如下:对于每一个位置上的数字进行如下处理: 每位数字加上 5, 然后除以 10 得到的余数代替该数字, 再将第一位和最后一位交换,第二位与倒数第二位交换, 依此类推, 最后输出加密后的数字密码 。
【输入形式】输入一行数字
【输出形式】输出加密后的结果
【样例输入】
123
【样例输出】
876
【样例输入】
321
【样例输出】
678
代码:
a = list(input())
for x in range(len(a)):
a[x] = (int(a[x])+5)%10
b = a.copy()
b.reverse()
for i in range(len(a)):
a[i] = b[i]
for i in range(len(a)):
print(a[i],end='')
12.题库:高度反弹
【问题描述】一球从 h 米高度自由落下, 每次落地后反跳回原高度的 0.5倍; 再落下, 求它在第 N 次落地时, 共经过多少米?
【输入形式】第一行输入高度,第二行输入N
【输出形式】输出两位数的浮点数
【样例输入】
10
6
【样例输出】
29.38
代码:
a = float(input())
b = int(input())
d = a
if b > 1:
for x in range(1,b):
c = a*(1/2)**(x)
d = d + c*2
print(f'{d:.2f}')
else:
print(f'{d:.2f}')
13.题库:找学生
【问题描述】折半查找。 1 个列表里存储了 20 个子列表, 各子列表内存储了学生的学号及姓名两个元素, 两个元素都是字符串类型。 现已知该 20 个学生子列表已按学号递增序排好序。请设计一个程序, 使用折半查找算法通过最少次数的比较找到指定学号的学生, 如果有, 输出这个学生的学号和姓名, 如果没有, 输出报告未找到该学生。 列表中存储数据为stu_list=
[['201801','zhangyi'],['201802','zhanger'],['201803','zhangsan'],['201804','zhangsi'],
['201805','wangyi'],['201806','wanger'],['201807','wangsan'],['201808','wangsi'],
['201809','liyi'],['201810','lier'],['201811','lisan'],['201812','lisi'],
['201813','zhaoyi'],['201814','zhaoer'],['201815','zhaosan'],['201816','zhaosi'],
['201817','zhouyi'],['201818','zhouer'],['201819','zhousan'],['201820','zhousi']]
【输入形式】输入要查找的学生学号
【输出形式】输出学号和姓名
【样例输入】201800
【样例输出】None
【样例输入】201803
【样例输出】201803zhangsan
代码:
stu_list=[['201801','zhangyi'],['201802','zhanger'],
['201803','zhangsan'],['201804','zhangsi'],
['201805','wangyi'],['201806','wanger'],
['201807','wangsan'],['201808','wangsi'],
['201809','liyi'],['201810','lier'],
['201811','lisan'],['201812','lisi'],
['201813','zhaoyi'],['201814','zhaoer'],
['201815','zhaosan'],['201816','zhaosi'],
['201817','zhouyi'],['201818','zhouer'],
['201819','zhousan'],['201820','zhousi']]
#第一种:
a = input()
for x in stu_list:
if a in x:
for i in range(len(x)):
print(x[i],end='')
break
else:
print(None)
#第二种:(折半查找算法)
for i in stu_list:
i[0] = int(i[0])
number = int(input())
begin = 0
end = len(stu_list) - 1
def printResult(x):
print(stu_list[x][0],stu_list[x][1],sep='')
while end > begin + 1:
mid = (begin + end) // 2
if stu_list[begin][0] == number:
printResult(begin)
break
elif stu_list[end][0] == number:
printResult(end)
break
else:
if stu_list[mid][0] == number:
printResult(mid)
break
elif stu_list[mid][0] < number:
begin = mid
else:
end = mid
else:
print(None)
14.题库:数列求和
【问题描述】有一个分数数列:2/1,3/2,5/3,8/5,13/8,21/13,...,从键盘输入一个正整数n,求出这个数列的前n项之和。
【输入形式】输入一个正整数n。
【输出形式】输出该数列的前n项之和,并保留四位小数。
【样例输入】3
【样例输出】5.1667
代码:
n = int(input())
a = 2.0
b = 1.0
total = 0
for i in range(n):
total = total + a/b
a,b = a+b , a
print(f'{total:.4f}')
15.题库:累积求和
【问题描述】从键盘不断地输入整数,当输入“#”时程序退出,然后打印出所输入整数的个数和总和。
【输入形式】输入多行,每行从键盘输入一个数,直到输入#为止,则输入停止。
【输出形式】输出一行,内容为以空格分隔的两个数,分别表示输入整数的个数n和这些整数的总和s。
【样例输入】
1
2
#
【样例输出】
2 3
【样例说明】输入整数的个数为两个,1+2=2,所以和为2.
代码:
total = 0
count = 0
while True: #无限循环
a = input()
if a == '#':
break
total = total + int(a)
count += 1
print(count,total)
16.题库:回文素数
【问题描述】编写程序,从键盘输入一个数n,输出n以内的所有的回文素数。若n输入不合法(为小数或者负数),则输出提示:“illegal input”。
回文素数是指一个数既是素数又是回文数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数称之为素数。例如131既是素数又是回文数。
【输入形式】输入一个整数n(n>1)。
【输出形式】以空格分隔输出n以内的所有的回文素数。若n输入不合法(为小数或负数),则输出提示“illegal input”
【样例输入1】200
【样例输出1】2 3 5 7 11 101 131 151 181 191
【样例输入2】-4
【样例输出2】illegal input
代码:
def isPrime(n):
if n > 1 :
for i in range(2, n):
if n % i == 0:
return 0
return n
def reverseNumber(n):
num = str(n)
m = num[::-1]
if num == m:
return n
N = float(input())
if (N-int(N))>0:
print("illegal input")
elif int(N)<1:
print("illegal input")
else:
N=int(N)
hui=[]
m=2
for x in range(2,N):
if isPrime(x) and reverseNumber(x) == x:
hui.append(x)
for x in range(len(hui)):
print("%d "%hui[x],end='')
17.题库:组合数字
【问题描述】从键盘输入两个整数n和m(要求n 【输入形式】输入一行,内容为两个以空格分隔的整数,分别表示n和m。 【输出形式】以空格分隔输出所有符合条件的三位数。 【样例输入】1 4 【样例输出】123 132 213 231 312 321 【样例输入】2 4 【样例输出】illegal input 【样例输入】0 3 【样例输出】102 120 201 210 代码: 18.题库:颜色混合器 【问题描述】 红色(red)、蓝色(blue)和黄色(yellow)被称为原色(primary color)。 当两种原色混合时,将得到次生色(secondary color)。 规则如下: 当红色与蓝色混合时,将得到紫色(purple)。 当红色与黄色混合时,将得到橙色(orange)。 当蓝色与黄色混合时,将得到绿色(green)。 编写一个程序,根据用户输入的欲混合的两种原色,输出混合得到的次生色的名称。 如果用户输入的不是三原色的名称,或者输入的两个颜色相同,则输出“error” 【输入形式】 原色1 原色2 【输出形式】 次生色 or error 【样例输入1】 red blue 【样例输出1】 purple 【样例输入2】 red red 【样例输出2】 error 代码: 19.题库:轮盘赌的颜色 【问题描述】 在一个赌博用的转盘上,口袋的编号是从0到36,口袋的颜色如下: 从1号袋到10号袋,奇数的口袋是红色,偶数的口袋是黑色。 从11号袋到18号袋,奇数的口袋是黑色,偶数的口袋是红色。 从19号袋到28号袋,奇数的口袋是红色,偶数的口袋是黑色。 从29号袋到36号袋,奇数的口袋是黑色,偶数的口袋是红色。 0号口袋是绿色 请编写一个程序,根据用户输入的口袋编号,输出口袋的颜色。 如果用户输入的数字不在0~36这个范围内,则输出“error”。 【输入形式】 整数 【输出形式】 green or red or black or error 【样例输入1】 0 【样例输出1】 green 【样例输入2】 11 【样例输出2】 black 代码: 20.题库:月份对应的季节 【问题描述】 根据用户输入的月份,打印该月份所属的季节,如果输入的数据不在1~12范围内,输出“error" 提示:3,4,5 spring ;6,7,8 summer ;9,10,11 autumn ;12,1,2 winter 【输入形式】 月份(整数) 【输出形式】 spring or summer or autumn or winter or error 【样例输入】 3 【样例输出】 spring 代码: 21.题库:字符统计 【问题描述】 输入一行字符(不能输入中文字符),分别统计出该字符串英文字符、空格、数字和其他字符的个数 【输入形式】 字符串 【输出形式】 英文字符个数 空格个数 数字字符个数 其他字符个数 【样例输入】 abcd 1 2 3 4!@#$$%^ 【样例输出】 4 4 4 7 【样例说明】 输出数字之间用空格隔开 代码: 22.题库:分段函数求值 【问题描述】 编写一个程序,用户输入一个值x,计算分段函数f(x)的值并输出结果,函数f(x)请用自定义函数实现。 其中 【输入形式】 x 【输出形式】 小数点后2位 【样例输入】 21.5 【样例输出】 2.12 【样例说明】 x的值可以是整数也可以是小数,甚至可以是负数 代码: 23.题库:美元人民币转换 【问题描述】 人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:人民币和美元间汇率固定为:1美元 = 6.78人民币。 程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用&符号或RMB表示,美元采用$或USD表示,符号和数值之间没有空格。 注意:人民币和美元间符号在转换中要对等,&和$相互对应,RMB和USD相互对应。 【输入形式】 美元或人民币 【输出形式】 转换后的人民币或美元,保留两位小数 输入不符合格式要求,输出“Error” 【样例输入1】 $128.00 【样例输出1】 &867.84 【样例输入2】 &12.9 【样例输出2】 $1.90 【样例输入3】 RMB123 【样例输出3】 USD18.14 【样例输入4】 USD18.14 【样例输出4】 RMB122.99 代码: 24.题库:判断正方形 【问题描述】 输入一个方形的长度和宽度,编写程序判断该方形是否为正方形(长和宽都应大于0) 【输入形式】 长度 宽度 【输出形式】 (1)如果长度等于宽度,输出:It's a square (2)如果长度不等于宽度,输出:It's a rectangle (3)如果长或宽有小于0的,输出:illegal data 【样例输入1】 10 10 【样例输出1】 It's a square 【样例输入2】 -2 10 【样例输出2】 illegal data 代码: 25.题库:评奖系统 【问题描述】 编程实现学校评奖系统 (1)如果数学成绩大于等于99并且语文成绩大于等于99,获奖学金500。 (2)如果数学和语文成绩都小于30,输出重修。 【输入形式】 语文成绩 数学成绩 【输出形式】 (1)如果数学和语文成绩都大于等于99,输出:You won a scholarship of 500 yuan! (2)如果数学和语文成绩都小于30,输出:You need to relearn! 【样例输入】 100 99 【样例输出】 You won a scholarship of 500 yuan! 代码: 26.题库:统计字符串中每个字母出现的次数 - Python编程基础及应用》习题6-8 【问题描述】 统计字符串列表中每个字母出现的次数。 编写程序,读入一个仅包含字符串对象的列表,然后统计该列表中每个字母出现的次数。 列表中的字符串对象仅包含小写英文字母。 【输入形式】 一个仅包括字符串对象的列表,且全部字符串对象中仅出现小写英文字母。 【输出形式】 字母,次数 ... 字母,次数 (注意按a-z的顺序输出) 【样例输入】 ["aaab", "cccdz"] 【样例输出】 a,3 b,1 c,3 d,1 z,1 代码: 27.题库:python水仙花数 【问题描述】输入一个整数,输出小于等于该整数的所有水仙花数,每行输出一个,若没有水仙花数则输出“none” “3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。 【输入形式】 【输出形式】 【样例输入】 100 【样例输出】 none 代码: 28.题库:成绩转换 【问题描述】 本题要求编写程序输入一个百分制成绩并把其转换为五分制成绩输出。 转换规则为: 大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。 【输入形式】输入只有一个百分制成绩,如98.5 【输出形式】输出对应的五分制成绩,如A 【样例输入1】67 【样例输出1】D 【样例输入2】94.5 【样例输出2】A 代码:n,m = map(int,input().split())
if 0 <= n < m <10 and m - n > 2:
for i in range(n,m):
for j in range(n,m):
for k in range(n,m):
if i!=0 and i!=j and j!=k and i!=k:
print(i,j,k,sep='',end=' ')
else:
print('illegal input')
a = input()
b = input()
if {a,b} == {'red','blue'}:
print('purple')
elif {a,b} == {'red','yellow'}:
print('orange')
elif {a,b} == {'blue','yellow'}:
print('green')
else:
print('error')
a = int(input())
if a == 0:
print('green')
elif 1<=a<=10:
if a%2==0:
print('black')
else:
print('red')
elif 11<=a<=18:
if a%2==0:
print('red')
else:
print('black')
elif 19<=a<=28:
if a%2==0:
print('black')
else:
print('red')
elif 29<=a<=36:
if a%2==0:
print('red')
else:
print('black')
else:
print('error')
a = int(input())
if a in {3,4,5}: #集合和列表都可以用
print('spring')
elif a in {6,7,8}:
print('summer')
elif a in {9,10,11}:
print('autumn')
elif a in {12,1,2}:
print('winter')
else:
print('error')
a = str(input())
alphaNum = 0
numberNum = 0
spaceNum = 0
elseNum = 0
for c in a:
if c.isalpha():
alphaNum += 1
elif c==' ':
spaceNum += 1
elif c.isnumeric():
numberNum += 1
else:
elseNum += 1
print(alphaNum,spaceNum,numberNum,elseNum)
a = float(input())
if a<20:
print(f'{6*a**2+1:.2f}')
elif 20<=a<40:
print(f'{(3*a-60)**(1/2):.2f}')
elif 40<=a:
print(f'{100/(1+a):.2f}')
a = input()
def r(x):return x/6.78
def m(x):return x*6.78
if a[0] == '$':
b = m(float(a[1:]))
print(f'&{b:.2f}')
elif a[:3] == 'USD':
b = m(float(a[3:]))
print(f'RMB{b:.2f}')
elif a[0] == '&':
b = r(float(a[1:]))
print(f'${b:.2f}')
elif a[:3] == 'RMB':
b = r(float(a[3:]))
print(f'USD{b:.2f}')
else:
print('Error')
chang = int(input())
kuan = int(input())
if chang == kuan and chang>0:
print('It\'s a square')
elif chang != kuan and chang>0 and kuan>0:
print("It's a rectangle")
else:
print("illegal data")
shuxue = int(input())
yuwen = int(input())
if shuxue>=99 and yuwen>=99:
print("You won a scholarship of 500 yuan!")
if shuxue<30 and yuwen<30:
print("You need to relearn!")
lst = eval(input())
counts = [0] * 26
for i in lst:
for j in i:
counts[ord(j)-ord('a')]+=1
for i in range(26):
if counts[i]>0:
print(chr(ord('a')+i),counts[i],sep=',')
a = int(input())
c = False
for x in range(2,a+1):
b = 0
for j in str(x):
b = int(j)**3 + b
if b == int(x):
print(int(x))
c = True
if not c: # 等同于 if c == False:
print('none')
a = float(input())
if a >= 90:
print('A')
elif 80<=a<90:
print('B')
elif 70<=a<80:
print('C')
elif 60<=a<70:
print('D')
else:
print('E')