7-1 jmu-python-求圆面积
输入一个数值表示圆的半径,求相应圆的面积。圆周率要求使用math库中的pi常量。
输入格式:
输入数值型数据,例如:1.5
输出格式:
输出圆面积,要求小数点后保留两位,例如:7.07
输入样例:
在这里给出一组输入。例如:
1.5
输出样例:
在这里给出相应的输出。例如:
7.07
代码示例:
import math r=float(input()) s=math.pi*r**2 print(f"{s:.2f}")
7-2 jmu-python-输入输出-计算字符串中的数
将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。
输入格式:
一行字符串,字符串中的数之间用1个空格或者多个空格分隔。
输出格式:
第1行:输出数的个数。
第2行:求和的结果,保留3位小数。输入样例:
2.1234 2.1 3 4 5 6
输出样例:
6 22.223
代码示例:
n=input() count = n.split() sum = 0 for i in count: sum += float(i) print(len(count)) print(f"{sum:.3f}")
7-3 Py的A+B
输入格式:
两行文字,每行都是一个数字
输出格式:
一行数字
输入样例:
18 21
输出样例:
39
代码示例:
a=int(input()) b=int(input()) print(f"{a+b}")
7-4 计算M和N的多个结果
用户输入两个数M和N(用两个input语句输入),其中N是整数,计算M和N的5种数学运算结果,并依次输出,结果间用空格分隔。
5种数学运算分别是:
M与N的和、M与N的乘积、M的N次幂、M除N的余数、M和N中较大的值
输入格式:
输入M和N的值
输出格式:
M与N的和 M与N的乘积 M的N次幂 M除N的余数 M和N中较大的值
输入样例:
在这里给出一组输入。例如:
10 2
输出样例:
在这里给出相应的输出。例如:
12 20 100 0 10
代码示例:
m=eval(input()) n=eval(input()) print(m+n,end=" ") print(m*n,end=" ") print(m**n,end=" ") print(m%n,end=" ") if m>n: print(m) else: print(n)
7-5 jmu-python-是否偶数
输入一个整数,判断是否偶数
输入样例:
7
输出样例:
7不是偶数
输入样例:
8
输出样例:
8是偶数
代码示例:
n=eval(input()) #eval函数:返回字符串的值 if n%2==0: print(f"{n}是偶数") else: print(f"{n}不是偶数")
7-6 计算逆序的四位数
输入一个四位数,得到一个新的四位数。新数的千位数字、百位数字、十位数字和个位数字分别是原数的个位数、十位数、百位数和千位数。
输入格式:
输入一个四位数(假设输入必定是四位数,并且最后一位不为0)。
输出格式:
输出一个四位数。
输入样例:
在这里给出一组输入。例如:
1234
输出样例:
在这里给出相应的输出。例如:
4321
代码示例:
n=input() print(n[::-1])
7-7 求圆周长和面积
已知一个圆的半径,计算该圆的周长和面积,结果保留2位小数。半径用实数表示,由键盘输入。设圆周率等于3.14159。
输入格式:
输入在一行中给出1个实数r,表示圆的半径。
输出格式:
在一行中输出圆的周长和面积,结果保留2位小数。数据之间留一个空格。
输入样例:
3
输出样例:
18.85 28.27
代码示例:
import math r=eval(input()) print(f"{3.14159*r*2:.2f} {3.14159*r**2:.2f}")
7-8 计算函数f(x)
计算函数f(x):
f(x) =输入格式:
在一行输入x, x>0。
输出格式:
在一行输出结果,函数值输出保留3位小数。
输入样例1:
在这里给出一组输入。例如:
3.64
输出样例1:
在这里给出相应的输出。例如:
f(3.64)=-3.907
输入样例2:
在这里给出一组输入。例如:
20
输出样例2:
在这里给出相应的输出。例如:
f(20.0)=1212904.080
代码示例:
from math import * x=float(input()) y=sin(radians(35))+(exp(x)-15*x)/sqrt(x**4+1)-log(7*x) print(f"f({x:})={y:.3f}")
7-9 分苹果 - 实验3 简单的计算及输入输出
现有n个苹果,均分给5位同学,剩下的苹果交还老师。请编写程序,解决下述问题:
- 每位同学能分得几个苹果?
- 一共分出去多少个苹果?
- 交还老师的苹果有几个?
输入样例:
输入苹果总数n。例如:
17
输出样例:
每人分得3个苹果. 一共分出去15个苹果. 交还老师2个苹果.
代码示例:
n=int(input()) m=n%5 a=n//5 # //整除 print(f"每人分得{a}个苹果.") print(f"一共分出去{n-m}个苹果.") print(f"交还老师{m}个苹果.")
7-10 对角线 - 实验3 简单的计算及输入输出
编写程序,实现下述功能:
- 从键盘读入矩形的长,以厘米为单位,应为小数;
- 从键盘读入矩形的宽,以厘米为单位,应为小数;
- 使用勾股定理计算对角线的长度并输出,保留1位小数。
输入格式:
长
宽输出格式:
对角线长度为:x.ycm.
其中,x.y为保留一位小数的浮点数。
输入样例:
5.1 4.3
输出样例:
对角线长度为:6.7cm.
代码示例:
import math a=float(input()) b=float(input()) print(f"对角线长度为:{math.sqrt(a**2+b**2):.1f}cm.")# sqrt取平方根
7-11 jmu-python-输入输出-计算字符串中的数
将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。
输入格式:
一行字符串,字符串中的数之间用1个空格或者多个空格分隔。
输出格式:
第1行:输出数的个数。
第2行:求和的结果,保留3位小数。输入样例:
2.1234 2.1 3 4 5 6
输出样例:
6 22.223
代码示例:
n=input() count=n.split() sum=0 for i in count: sum+=float(i) print(f"{len(count)}") print(f"{sum:.3f}")
7-12 jmu-python-输入输出-格式化输出字符串
输入3行字符串,然后对其按照说明进行格式化输出
输入格式:
第1行:一个浮点数字符串
第2行:一个整数字符串
第3行:一个非数值型字符串输出格式:
对浮点数字符串:
第1行: 保留2
位小数输出
第2行: 分别输出浮点数的小写字母e的指数形式,大写字母e的指数形式, 百分数形式且其小数部分为2
位。每个输出的元素之间以一个空格分隔。对于整数:
第3行:在一行分别输出其二进制与小写十六进制,之间以一个空格分隔。对非数值型字符串:
首先,去除掉字符串得左右空格。然后输出3行:
第4行,将全部字符转化为大写并输出。
第5行,将字符串右对齐输出,宽度为20
。
第6行,将字符串居中输出,宽度20
,两侧使用*
填充。最后:
第7行,将浮点数与整数以浮点数 + 整数 = 结果
的形式输出输入样例:
3.14159265 10 abc 123
输出样例:
3.14 3.141593e+00 3.141593E+00 314.16% 1010 a ABC 123 abc 123 ******abc 123******* 3.14159265 + 10 = 13.14159265
代码示例:
a=eval(input()) b=eval(input()) c=input().strip()#删除字符串两边空格 print("{:.2f}".format(a)) print("{:e}".format(a),end=" ") print("{:E}".format(a),end=" ") print("{:.2%}".format(a)) print("{:b}".format(b),end=" ") print("{:x}".format(b)) print("{}".format(c.upper())) print("{:>20}".format(c)) print("{:*^20}".format(c)) print("{1} + {0} = {2}".format(b,a,a+b),end="")
7-13 删除字符
输入一个字符串 str,再输入要删除字符 c(非空格字符),大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。
输入格式:
在第一行中输入一行字符
在第二行输入待删除的字符输出格式:
在一行中输出删除后的字符串
输入样例1:
在这里给出一组输入。例如:
Bee E
输出样例1:
在这里给出相应的输出。例如:
result: B
输入样例2:
在这里给出一组输入。例如:
7!jdk*!ASyu !
输出样例2:
在这里给出相应的输出。例如:
result: 7jdk*ASyu
代码示例:
a= input().strip() b=input().strip() c=a.replace(b.upper(),"") c=c.replace(b.lower(),"") print(f"result: {c}")
7-14 jmu-python-统计字符个数
输入一个字符串,统计其中数字字符及小写字符的个数
输入格式:
输入一行字符串
输出格式:
共有?个数字,?个小写字符
,?
填入对应数量输入样例:
helo134ss12
输出样例:
共有5个数字,6个小写字符
代码示例:
n=input() num=low=0 for i in n: if i>='0'and i<='9': num+=1 elif i>='a'and i<='z': low+=1 print(f"共有{num}个数字,{low}个小写字符")
7-15 统计字符串中指定字符的个数
输入一个字符串和一个字符,统计这个字符在字符串中出现的次数
输入格式:
输入2行。第1行是字符串,第2行是要查找的字符。
输出格式:
字符出现的次数
输入样例:
abcdefgabcdefg a
输出样例:
2
代码示例:
a=input() b=input() count=a.count(b) print(count)
7-16 jmu-python-逆序输出
输入一行字符串,然后对其进行如下处理。
输入格式:
字符串中的元素以空格或者多个空格分隔。
输出格式:
逆序输出字符串中的所有元素。
然后输出原列表。
然后逆序输出原列表每个元素,中间以1个空格分隔。注意:最后一个元素后面不能有空格。输入样例:
a b c e f gh
输出样例:
ghfecba ['a', 'b', 'c', 'e', 'f', 'gh'] gh f e c b a
代码示例:
s = input().strip() # 读取并去掉左右空格 # 将字符串按空格分隔成列表,并去掉空元素 lst = [elem for elem in s.split(' ') if elem != ''] # 逆序输出所有元素 print(''.join(lst[::-1])) # 输出原列表 print(lst) # 逆序输出原列表每个元素(最后一个元素后面没有空格) print(' '.join(lst[::-1]))
7-17 计算各对应位乘积之和
读入两个整数a和b,输出绝对值a和绝对值b的各对应位乘积之和,如a=1234,b=608,则输出值为:“1×0+2×6+3×0+4×8“的值,即44。
输入格式:
在一行中输入两个数
输出格式:
在一行中输出对应位乘积之和
输入样例:
在这里给出一组输入。例如:
1234 608
输出样例:
在这里给出相应的输出。例如:
44
代码示例:
# 获取用户输入的两个整数,并将其赋值给变量a和b #map(function,iterable,……):将function应用于iterable的每一个元素,结果以列表的形式返回 a, b = map(int, input().split()) # 将a和b都转换为它们的绝对值,以确保后续计算不受正负号影响 a = abs(a) b = abs(b) # 初始化一个变量sum,用于存储每一位数字乘积的和 sum = 0 # 进入循环,直到a和b都为0时结束循环 while True: # 如果a和b都为0,则退出循环 if a == 0 and b == 0: break # 取a的最后一位数字,并将其与b的最后一位数字相乘,然后将结果累加到sum中 sum += (a % 10) * (b % 10) # 将a和b分别除以10,以去掉它们的最后一位数字 a //= 10 b //= 10 # 输出最终计算得到的sum值 print(sum)
7-18 大于身高的平均值
中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。
输入格式:
在一行输入中一个班的身高值,以空格分隔。
输出格式:
在一行输出超过输入的平均数的输入值,以空格分隔。
输入样例:
在这里给出一组输入。例如:
143 174 119 127 117 164 110 128
输出样例:
在这里给出相应的输出。例如:
143 174 164
代码示例:
list=input().split(" ") sum=0 for i in list: sum+=int(i) avg=sum/len(list) for i in list: if int(i)>avg: print(i,end=" ")
7-19 列表去重
输入一个列表,去掉列表中重复的数字,按原来次序输出!
输入格式:
在一行中输入列表
输出格式:
在一行中输出不重复列表元素
输入样例:
在这里给出一组输入。例如:
[4,7,5,6,8,6,9,5]
输出样例:
在这里给出相应的输出。例如:
4 7 5 6 8 9
代码示例:
l=list(eval(input())) l1=[] for i in l: if i not in l1: l1.append(i) index=0 for i in l1: if index!=len(l1)-1: print(i,end=" ") else: print(i,end='') index+=1
7-20 人民币与美元汇率兑换程序
设计人民币与美元汇率兑换程序,按照1美元=7人民币的汇率 编写一个双向兑换程序。
输入格式:
输入美元或者人民币的金额,币种在前,金额在后,如:$20、¥100。每次输入一个金额。
输出格式:
输出经过汇率计算的美元或人民币的金额,格式与输入一样,结果保留两位小数。
输入样例1:
$20
输出样例1:
¥140.00
输入样例2:
¥100
输出样例2:
$14.29
输入样例3:
#120
输出样例3:
输入格式错误
代码示例:
def M_C_R(a): exchange_rate=7 return a*exchange_rate def R_C_M(a): exchange_rate=7 return a/exchange_rate s=input() a=float(s[1:]) if s[0] == '$': print('¥%.2f'%M_C_R(a)) elif s[0] == '¥': print('$%.2f'%R_C_M(a)) else: print('输入格式错误')
7-21 求整数序列中出现次数最多的数
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
在一行中输入序列中整数个数N,以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
13 3 2 -1 5 3 4 3 0 3 2 12 3 123
输出样例:
3 5
代码示例:
s=input().split() count_max=0 number=0 for i in set(s): if s.count(i) > count_max: count_max=s.count(i) number=i print(number,count_max)
7-22 列表元素分解统计
从键盘读入一组数据(以半角逗号‘,’分割)存在一个列表中,并将列表按是否是素数分解为两个列表,统计输出这两个列表。
输入格式:
以半角逗号‘,’分割读入的这组数据。
输出格式:
分四行输出(所有符号均为半角符号)
输入样例:
在这里给出一组输入。例如:
23,45,78,87,11,67,89,13,56,67,29,431,111
输出样例:
在这里给出相应的输出。例如:
素数列表8个: [23, 11, 67, 89, 13, 67, 29, 431] 非素数列表5个: [45, 78, 87, 56, 111]
代码示例:
def T_F_su(a): for i in range(2,a): if a%i==0: return False return True lst=input().split(",") sus=[] su_off=[] for i in lst: if T_F_su(int(i)): sus.append(int(i)) else: su_off.append(int(i)) print("素数列表8个:") print(sus) print("非素数列表5个:") print(su_off,end="")
7-23 求出歌手的得分
输入一个正整数n (n>4),再输入n个实数,求出歌手的得分(保留2位小数)。设一歌唱评奖晚会上有n(n>4)个评委为歌手打分.评分规则:每个评委依次打分,再去掉2个最高分和2个最低分,计算余下的分数平均值为歌手的得分.
输入格式:
在第一行中输入n
在第二行中输入n个分数输出格式:
在一行中输出平均分数
输入样例:
在这里给出一组输入。例如:
10 10 10 9 9 9 8 8 8 7 7
输出样例:
在这里给出相应的输出。例如:
aver=8.50
代码示例:
n=int(input()) s=map(int,input().split()) s=sorted(s) #sorted:进行降序排序 del s[0] del s[0] del s[-1] del s[-1] aver=sum(s)/(n-4) print('aver={:.2f}'.format(aver))
7-24 输出字母在字符串中位置索引
输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。
输入格式:
第一行输入字符串
第二行输入两个字符,用空格分开。输出格式:
从右向左输出字符和索引,即下标最大的字符最先输出。每行一个。
输入样例:
在这里给出一组输入。例如:
pmispsissippi s p
输出样例:
在这里给出相应的输出。例如:
11 p 10 p 8 s 7 s 5 s 4 p 3 s 0 p
代码示例:
str=input() a,b=input().split(' ') str=str[::-1] #逆序 l=len(str) -1 #记录索引,不能用index,因为已经逆序 for i in str: if i == a or i == b: print(l,i) l-=1
7-25 字典合并
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串;
在第二行中输入第二个字典字符串。
输出格式:
在一行中输出合并的字典,输出按字典序。
"1" 的 ASCII 码为 49,大于 1,排序时 1 在前,"1" 在后。其它的字符同理。
输入样例1:
在这里给出一组输入。例如:
{1:3,2:5} {1:5,3:7}
输出样例1:
在这里给出相应的输出。例如:
{1:8,2:5,3:7}
输入样例2:
在这里给出一组输入。例如:
{"1":3,1:4} {"a":5,"1":6}
代码示例:
a=eval(input()) b=eval(input()) for k in b.keys(): a[k]=a.get(k,0)+b[k] t=list(a.items()) t.sort(key=lambda x:ord(x[0]) if type(x[0]) == str else x[0]) c=str(dict(t)).replace(' ','').replace("'",'"') print(c)
7-26 通过两个列表构建字典
输入两行字符串,以空格为分隔,将每行字符串存储为列表形式。将第一个列表的元素值作为键,将第二个列表中对应顺序的元素作为值,构建一个字典,按键升序排列后输出字典的所有键值对列表。
输入格式:
输入两行字符串,分别以空格为分隔存为列表。
输出格式:
按键的升序,输出字典键值对列表。
输入样例:
学校 城市 邮编 集美大学 厦门 361021
输出样例:
[('城市', '厦门'), ('学校', '集美大学'), ('邮编', '361021')]
代码示例:
l1=input().split() l2=input().split() dit={} for i in range(len(l1)): dit[l1[i]]=l2[i] l3=list(dit.items()) l3=sorted(l3,key=lambda x:x[0]) print(l3) #或者 a=input().split() b=input().split() c=dict(zip(a,b)) #zip函数:将多个可迭代对象(如列表、元组、字符串等)作为参数,将它们中对应位置的元素组合成一个个元组,然后返回一个由这些元组组成的列表 print(sorted(c.items()))
7-27 jmu-python-重复元素判定
每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复元素。
编写函数判定列表中是否包含重复元素,如果包含返回True
,否则返回False
。
然后使用该函数对n行字符串进行处理。最后统计包含重复元素的行数与不包含重复元素的行数。输入格式:
输入n,代表接下来要输入n行字符串。
然后输入n行字符串,字符串之间的元素以空格相分隔。输出格式:
True=包含重复元素的行数, False=不包含重复元素的行数
,
后面有空格。输入样例:
5 1 2 3 4 5 1 3 2 5 4 1 2 3 6 1 1 2 3 2 1 1 1 1 1 1
输出样例:
True=3, False=2
代码示例:
def ToF_rep(lr): return len(lr)!=len(set(lr)) def Count(list): T=0 for i in list: if ToF_rep(i): T+=1 return T n=int(input()) list=[] for i in range(n): list.append(input().split(" ")) T=Count(list) F=n-T print(f'True={T}, False={F}')
7-28 字符替换
本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)
原字母 对应字母 A Z B Y C X D W ... ... X C Y B Z A 输入格式:
在一行中输入字符串
输出格式:
在一行中给出替换完成后的字符串。
输入样例:
在这里给出一组输入。例如:
This is a pen.
输出样例:
在这里给出相应的输出。例如:
Ghis is a pen.
代码示例:
n=input() r="" for i in n: if i.isupper(): i=chr(ord('A')+ord('Z')-ord(i)) r+=i else: r+=i print(r)
7-29 合并成绩
为某同学创建2个元组score1和score2,score1中包含该同学若干门必修课的成绩,score2中包含该同学若干门选修课的成绩,合并这两个元组形成该同学所有课程的成绩,并输出。
输入格式及样例:
分两行输入两个元组的成绩,每行两个成绩之间以逗号间隔
85,67,74 82,95
输出格式及样例:
在同一行输出该同学所有课程的成绩,每个成绩占4列。
85 67 74 82 95
输入格式及样例:
分两行输入两个元组的成绩,每行两个成绩之间以逗号间隔
85,67,74,95 90,82,93
输出格式及样例:
在同一行输出该同学所有课程的成绩,每个成绩占4列。
85 67 74 95 90 82 93
代码示例:
a=tuple(input().split(',')) b=tuple(input().split(',')) for i in tuple(tuple(a)+tuple(b)): print(f" {i}",end="")
7-30 zust-sy7-11输出生肖和星座
编写程序,输入出生年月日,输出你的生肖和星座。
输入格式:
输入出生年月日 (格式如20200112)
输出格式:
分2行输出生肖和星座。
输入样例:
在这里给出一组输入。例如:
20030708
输出样例:
在这里给出相应的输出。例如:
您的生肖是:羊 您的星座是:巨蟹座
代码示例:
zodiac_signs = ['鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪'] constellations = [ '摩羯座', '水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座' ] birth_date = input().strip() year = int(birth_date[:4]) month = int(birth_date[4:6]) day = int(birth_date[6:]) zodiac_index = (year - 4) % 12 zodiac = zodiac_signs[zodiac_index] constellation = constellations[month - 1] print(f"您的生肖是:{zodiac}") print(f"您的星座是:{constellation}")
7-31 jmu-python-素数
输入一个数,判断其是否素数。素数是大于1的自然数中,除了1和它本身以外不再有其他因数。
输入格式:
输入一个整数
输出格式:
输出是否素数。
输入样例:
12
输出样例:
12 is not prime
输入样例:
7
输出样例:
7 is prime
代码示例:
def sushu(n): if n<2: return False for i in range(2,n): if n%i==0: return False return True n=int(input()) if sushu(n): print(f"{n} is prime") else: print(f"{n} is not prime")
7-32 jmu-python-找字符
输入一个字符串及字符,输出第一次出现该字符的位置。
输入格式:
- 行1:输入字符串
- 行2:输入一个字符
输出格式:
- 找到,输出对应位置,格式
index=X
的,X
表示查找到位置- 找不到,输出
can't find letter X
,X
表示查找字符输入样例:
python t
输出样例:
index=3
输入样例:
python l
输出样例:
can't find letter l
代码示例:
n=input() x=input() if n.find(x)==-1: print(f"can't find letter {x}") else: print(f"index={n.find(x)+1}") #Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。 #str.find(str, beg=0, end=len(string))
7-33 运输打折问题
某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:
其中基本运输费用为每吨每公里1元,现请你帮助该运输公司设计自动计费程序,帮助会计人员计算运输费用。输入格式:
输入每次运输的载重(吨)、里程(公里)。
输出格式:
输出其运输费用,精确到元。
输入样例:
在这里给出一组输入。例如:
1 200
输出样例:
在这里给出相应的输出。例如:
200
输入样例:
在这里给出一组输入。例如:
10 2500
代码示例:
weight,mileage = input().split() weight = float(weight) mileage = float(mileage) price = 0 if mileage < 250 : rebate = 0 elif 250 <= mileage < 500: rebate = 0.02 elif 500 <= mileage < 1000: rebate = 0.05 elif 1000 <= mileage < 2000: rebate = 0.08 elif 2000 <= mileage < 3000: rebate = 0.10 else : rebate = 0.15 price = int(weight * mileage * (1 - rebate)) print("{0:d}".format(price))
7-34 水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153=1×1×1+5×5×5+3×3×3。本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤5)
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
153 370 371 407
代码示例:
n=int(input()) for i in range(pow(10,n-1),pow(10,n)): sum=0 for j in str(i): sum+=pow(int(j),n) if sum==i: print(i)
7-35 生成输入数的乘方表
输入一个非负数和正整数n,3<=n<=9,生成一张输入数的乘方表。
输入格式:
在一行输入一个非负数和正整数n。
输出格式:
按照幂的递增顺序输出n+1行,计算结果保留2位小数。
输入样例1:
在这里给出一组输入。例如:
2.5 3
输出样例1:
在这里给出相应的输出。例如:
2.5**0=1.00 2.5**1=2.50 2.5**2=6.25 2.5**3=15.62
输入样例2:
在这里给出一组输入。例如:
4 6
输出样例2:
在这里给出相应的输出。例如:
4.0**0=1.00 4.0**1=4.00 4.0**2=16.00 4.0**3=64.00 4.0**4=256.00 4.0**5=1024.00 4.0**6=4096.00
代码示例:
a,b=map(float,input().split()) #map函数:对列表每个元素迭代float for i in range(int(b)+1): print(f'{a:.1f}**{i}={pow(a,i):.2f}')
7-36 计算坐标点欧氏距离
读取若干个点,每个点放入元组。并将所有点的点信息、点的类型、点与原点的距离打印出来。
函数接口定义:
readPoint() #从一行以,分隔的数中读取坐标,放入元组并返回 distance(point) #计算point与原点的距离并返回,要math库中的函数
裁判测试程序样例:
/* 请在这里填写答案 */ n = int(input()) for i in range(n): p = readPoint() print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))
输入格式:
输入n,代表底下要输入n行点坐标。坐标全部为整数。
点坐标x,y,z以,
分隔。坐标全部为整数。注意:坐标以
,
分隔,相应位置可能无字符或者包含多个空格字符,读入时按照0进行处理。输出格式:
见输出样例
输入样例:
5 1,1,1 ,, 2,,1 3,1,3 5,,
输出样例:
Point = (1, 1, 1), type = <class 'tuple'>, distance = 1.732 Point = (0, 0, 0), type = <class 'tuple'>, distance = 0.000 Point = (2, 0, 1), type = <class 'tuple'>, distance = 2.236 Point = (3, 1, 3), type = <class 'tuple'>, distance = 4.359 Point = (5, 0, 0), type = <class 'tuple'>, distance = 5.000
代码示例:
def readPoint(): tuples=[] coordinates=input().split(',') for i in coordinates: if i =='': tuples.append(0) else: tuples.append(int(i)) return tuple(tuples) def distance(point): sum=0 for i in point: sum+=i**2 return sum**0.5
7-37 jmu-python-函数-找钱
买单时,营业员要给用户找钱。营业员手里有10元、5元、1元(假设1元为最小单位)几种面额的钞票,其希望以
尽可能少(张数)的钞票将钱换给用户。比如,需要找给用户17元,那么其需要给用户1张10元,1张5元,2张1元。
而不是给用户17张1元或者3张5元与2张1元。函数接口定义:
giveChange(money) #money为要找的钱。经过计算,应按格式"要找的钱 = x*10 + y*5 + z*1"输出。
裁判测试程序样例:
/* 请在这里填写答案 */ n = int(input()) for i in range(n): giveChange(int(input()))
输入样例:
5 109 17 10 3 0
输出样例:
109 = 10*10 + 1*5 + 4*1 17 = 1*10 + 1*5 + 2*1 10 = 1*10 + 0*5 + 0*1 3 = 0*10 + 0*5 + 3*1 0 = 0*10 + 0*5 + 0*1
代码示例:
def giveChange(num): x=int(num/10) m=num%10 y=int(m/5) m=m%5 z=int(m/1) print(f"{num} = {x}*10 + {y}*5 + {z}*1")
7-38 统计字符个数
编写程序统计1行字符串中:
- 不同字符的个数。
- 每种字符出现的次数。
函数接口定义:
Freq(line)
函数功能:该函数统计不同字符出现的次数,并最后按照字符升序进行输出。输出格式见输出样例。
参数说明:line为需要统计的字符串。裁判测试程序样例:
/* 请在这里填写答案 */ line = input() Freq(line)
输入样例:
abc 123 adex!!!
输出样例:
11 = 2 ! = 3 1 = 1 2 = 1 3 = 1 a = 2 b = 1 c = 1 d = 1 e = 1 x = 1
输出格式说明:
- 第1行输出不同字符的个数。
- **=**两边应有空格。
- 上述输出样例中第2行的字符是空格。
- 输出按照字符升序排列。
代码示例:
def Freq(line): arr={} for i in line: arr[i]=arr.get(i,0)+1 arr=list(arr.items()) arr.sort(key=lambda x:x[0]) print(len(arr)) for i in range(len(arr)): m,n=arr[i] print(f"{m} = {n}")
7-39 编写函数计算f(i) = 1/2 + 2/3 + 3/4 + ... + i/(i+1)
编写函数计算f(i) = 1/2 + 2/3 + 3/4 + ... + i/(i+1) 。
函数接口定义:
def f(i)
i为正整数,返回结果浮点数。
裁判测试程序样例:
v=int(input()) print("%.4f" % f(v))
输入样例:
5
输出样例:
3.5500
代码示例:
def f(i): if i <=1: return 1/2 return i/(i+1) + f(i-1) #递归
7-40 编写函数计算一个或不特定多个数的乘积
编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)
函数接口定义:
def caculate(*t)
打*号的参数t接受多个参数成员,参数成员预期为整数或浮点数类型。
裁判测试程序样例:
s = input().split() #接受输入字符串并按空格分拆,存入列表,列表成员为字符串类型 t = [float(x) for x in s] #使用列表推导将列表s中的成员全部转换成浮点数,存入另一个列表t print("%.4f" % caculate(*t))
输入样例:
3 2 1
输出样例:
6.0000
代码示例:
def caculate(*t): i=1 for value in t: i *=value return i
7-41 函数-可变长度参数
编写函数实现统计单词个数的功能,并按照单词数量从高到低输出,输出格式及要求如下:
用户输入任意个数的不同单词,用空格间隔;
请在函数中实现对输入单词的词频统计,为便于统计请将所有单词先做小写处理,并按照单词数量从高到低的顺序输出单词和对应的数量,相同数量的单词按照英文字母表顺序输出,如(("word",4),("it",1),("limit",1)),函数返回数据格式为元组;
具体格式要求请参照输入输出样例函数接口定义:
函数接口。例如: def WordCount(*word):
裁判测试程序样例:
/* 请在这里填写答案 */ listword = input().split() sortword = WordCount( *listword ) print( list( sortword ) )
输入样例:
输入例如:
They were from the Middle West from the Far West from Old World England
输出样例:
输出如:
[('from', 3), ('the', 2), ('west', 2), ('england', 1), ('far', 1), ('middle', 1), ('old', 1), ('they', 1), ('were', 1), ('world', 1)]
代码示例:
def WordCount(*word): s={} for i in word: s[i.lower()]=s.get(i.lower(),0)+1 return sorted(s.items(),key=lambda x:(-x[1],x[0]))
7-42 计算阶乘
本题要求实现一个函数,可计算参数num的阶乘,并将结果返回。
函数接口定义:
def factorial(num):
num是用户传入的参数,为整数。
裁判测试程序样例:
/* 请在这里填写答案 */ n = eval(input()) print(factorial(abs(int(n))))
输入样例:
在这里给出一组输入。例如:
5
输出样例:
在这里给出相应的输出。例如:
120
代码示例:
def factorial(n): if n == 0: return 1 else: return n*factorial(n-1)
7-43 凯撒加密解密
本题要求实现一个函数,实现对凯撒加密的密文进行解密。即输入为一个密文和加密参数,输出为解密后的原文。
函数接口定义:
def Decrypt( cryptedText, numToMove);
cryptedText
为等待解密的文本,numToMove
是凯撒加密的参数,即移动位数。裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: text = input('请输入密文:') num = eval(input("请输入加密的移动位数:")) orgText = Decrypt(text, num) print(orgText) /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
mjqqt btwqi 5
输出样例:
在这里给出相应的输出。例如:
hello world
代码示例:
def Decrypt(cryptedText, numToMove): result="" for i in cryptedText: # 若是大写 if i.isupper(): result+=chr((ord(i)-ord('A')-numToMove)%26+ord('A')) # 若是小写 elif i.islower(): result+=chr((ord(i)-ord('a')-numToMove)%26+ord('a')) else: result+=i return result
7-44 凯撒加密的破解
本题要求实现一个函数,可破解一个凯撒密文
函数接口定义:
在这里描述函数接口。例如: def Crack(text):
text
是输入的加密字符串,输出为破解后的原字符串裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: # 可以使用下面的函数,获取英文单词列表 def ReadEnglishWords(): result = ['hello','world','you','me','like','i','python','this',\ 'is','are','the','great','so','thank','much','winter','summer'] return result # 可以使用下面的函数,进行凯撒解密 def Decrypt(text, numToMove): afterText = "" for p in text: if ord("a") <= ord(p) <= ord("z"): afterText += chr(ord("z")-(ord('z')-ord(p)+numToMove)%26) elif ord("A") <= ord(p) <= ord("Z"): afterText += chr(ord("Z")-(ord('Z')-ord(p)+numToMove)%26) else: afterText += p return afterText /* 请在这里填写答案 */ t = input() org = Crack(t) print(org)
输入样例:
在这里给出一组输入。例如:
Ftmzw kag ea ygot!
输出样例:
在这里给出相应的输出。例如:
Thank you so much!
代码示例:
def Crack(text): # 分割字符串 text = text.split(' ') # 判断末尾是否有标点 flag = True # 若有标点则存放起来 if not text[-1].isalpha(): flag = False oldword = list(text[-1]) restructuring = "" # 标点存放字符串 symbol = "" for i in oldword: if i.isalpha(): restructuring = restructuring + i else: symbol = i text[-1] = restructuring # 提供的单词字典 EnglishWord = ReadEnglishWords() # 解密后句子 for x in range(1, 26): newList = [] for i in text: # 凯撒解密 words = Decrypt(i, x) # 将单词组装到解密句子 newList.append(words) # 统计句子中与字典中相同个数 count = 0 # 在字典中循环寻找对应解密的单词,如果对应则数目加一 for k in EnglishWord: for m in newList: if k == m.lower(): count += 1 # 判断正确比例 numbers = count / len(newList) # 正确比例大于60%则输出,原加密句式中有标点则补上 if numbers >= 0.6: a = " ".join(newList) if not flag: a = a + symbol return a
7-45 编写函数求短语的缩写词
缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。
函数接口定义:
acronym(phrase);
phrase是短语参数,返回短语的缩写词
裁判测试程序样例:
/* 请在这里填写答案 */ phrase=input() print (acronym(phrase))
输入样例:
central processing unit
输出样例:
CPU
代码示例:
def acronym(p): s="" p=p.title() #返回’标题化‘的字符串,就是单词的开头为大写,其余为小写 a=p.split() for i in range(0,len(a)): s+=a[i][0] return s
7-46 修改句子
读入一个英文句子,将此句子的第一个字母改为大写字母,并在最后加上句号'.'
注意:读入的句子有可能本来就符和要求。
函数接口定义:
def fun(sentence):
裁判测试程序样例:
/* 请在这里填写答案 */ doc = input() res = fun(doc) print(res)
输入样例1:
在这里给出一组输入。例如:
hello, world
输出样例1:
在这里给出相应的输出。例如:
Hello, world.
输入样例2:
在这里给出一组输入。例如:
Hello, world.
输出样例2:
在这里给出相应的输出。例如:
Hello, world.
代码示例:
def fun(sentence): sentence =sentence.strip() if not sentence: return "" res = sentence[0].upper()+sentence[1:] if res[-1]!='.': res+='.' return res
7-47 优异生查询(类和对象)
题目: 编程实现查找优异生的功能——用户输入多个学生的成绩,输出总分最高的学生姓名和各科成绩
要求: 设计一个学生类(Student),包括
1)属性:姓名(name),数学成绩(mscore),语文成绩(cscore),英语成绩(escore);
2)方法:
- 构造方法,来构造每个具体的学生对象
- 计算总成绩方法getSum(self),返回三个成绩的和
- 获得优异生姓名,数学成绩,语文成绩,英语成绩的方法getBest(self),返回4个结果内容(优异生姓名,数学成绩,语文成绩,英语成绩)
输入格式:
通过4行输入:
第一行输入多个学生姓名,以空格分隔
第二行输入多个数学成绩,以空格分隔
第三行输入多个语文成绩,以空格分隔
第四行输入多个英语成绩,以空格分隔
注意:学生姓名个数要和成绩个数保持一致
输出格式:
在一行中,输出总分最高的学生及其各科科目成绩,以空格分隔。
输入样例:
在这里给出一组输入。例如:
Jack Tom Jim 95 84 32 90 75 45 85 90 67
输出样例:
在这里给出相应的输出。例如:
Jack 95 90 85
代码示例:
class Student: def __init__(self,n,m,c,e): self.n=n self.m=float(m) self.c=float(c) self.e=float(e) def getSum(self): return float(self.m+self.c+self.e) def getBest(self): return f"{self.n} {self.m:.0f} {self.c:.0f} {self.e:.0f}" l=[] for i in range(4): l.extend(list(input().split())) n=int(len(l)/4) s=[] for i in range(n): s.append(Student(l[i],l[i+n],l[i+2*n],l[i+3*n])) max=s[0] for i in s: if(max.getSum()<i.getSum()): max=i print(max.getBest())
7-48 三维向量运算
设计一个三维向量类,实现向量加法、减法以及向量与标量的乘法和除法运算。后面添加下面代码完成:
输入样例:
输出样例:
(4, 6, 8) (4, 6, 8) (-2, -2, -2) (3, 6, 9) (1.5, 2.0, 2.5) (1, 2, 2)
代码示例:
class Vecter3: def __init__(self,x = 0,y = 0,z = 0): self.X=x self.Y=y self.Z=z def add(self, n): r = Vecter3() r.X=self.X+n.X r.Y=self.Y+n.Y r.Z=self.Z+n.Z return r def __add__(self,n): r=Vecter3() r.X=self.X+n.X r.Y=self.Y+n.Y r.Z=self.Z+n.Z return r def __sub__(self,n): r=Vecter3() r.X=self.X-n.X r.Y=self.Y-n.Y r.Z=self.Z-n.Z return r def __mul__(self,n): r=Vecter3(0) r.X = self.X * n r.Y = self.Y * n r.Z = self.Z * n return r def __truediv__(self,n): r=Vecter3() r.X=self.X/n r.Y=self.Y/n r.Z=self.Z/n return r def __floordiv__(self,n): r=Vecter3(0,0,0) r.X=self.X//n r.Y=self.Y//n r.Z=self.Z//n return r def show(self): print((self.X,self.Y,self.Z)) def main(): v1 = Vecter3(1,2,3) v2 = Vecter3(3,4,5) v3 = v1 + v2 v3.show() v3 = v1.add(v2) v3.show() v4 = v1 - v2 v4.show() v5 = v1 * 3 v5.show() v6 = v2/2 v6.show() v7 = v2//2 v7.show() main() class Vecter3: def __init__(self,x = 0,y = 0,z = 0): self.X=x
7-49 一个简单的注释抽取程序
本题要求实现一个函数,可提取一行代码中的注释部分(假设均有单行注释,且均以#作为单行注释标志)。例如代码是:
with open(path,'r',encoding='utf-8') as f: #打开文件
调用函数后,得到的注释部分是:#打开文件
函数接口定义:
函数接口描述如下: string GetComment(string line)
其中,line是用户传入的参数,即原始代码;函数返回值是抽取的注释内容
裁判测试程序样例:
/* 请在这里填写答案 */ code=input() print(GetComment(code))
输入样例:
在这里给出一组输入。例如:
hanno(num-1, temp, dst, src)#把除最后一个盘子之外的其他盘子从临时柱子上移动到目标柱子上
输出样例:
在这里给出相应的输出。例如:
#把除最后一个盘子之外的其他盘子从临时柱子上移动到目标柱子上
代码示例:
import re def GetComment(line): a="".join(re.findall('#.+',line)) return a
7-50 产生每位数字相同的n位数
读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA...A,一共B个A
输入格式:
在一行中输入A和B。
输出格式:
在一行中输出整数AA...A,一共B个A
输入样例1:
在这里给出一组输入。例如:
1, 5
输出样例1:
在这里给出相应的输出。例如:
11111
输入样例2:
在这里给出一组输入。例如:
3 ,4
输出样例2:
在这里给出相应的输出。例如:
3333
代码示例:
import re A,B=re.findall('[0-9]',input()) #findall:正则表达式函数 print(A*int(B))
7-52 输出10个不重复的英文字母
随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。
如没有10个英文字母,显示信息“not found”输入格式:
在一行中输入字符串
输出格式:
在一行中输出最左边的10个不重复的英文字母或显示信息“not found"
输入样例1:
在这里给出一组输入。例如:
poemp134567
输出样例1:
在这里给出相应的输出。例如:
not found
输入样例2
在这里给出一组输入。例如:
This 156is a test example
输出样例2:
在这里给出相应的输出。例如:
Thisaexmpl
代码示例:
s=input() b=[] for i in s: if i.isalpha() and (i.upper() not in b) and (i.lower() not in b): b.append(i) str ="".join(b) if len(str)>=10: print(str[:10]) else: print("not found")
7-53 词频统计
请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。
所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。
输入格式:
输入给出一段非空文本,最后以符号
#
结尾。输入保证存在至少10个不同的单词。输出格式:
在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。
随后按照词频递减的顺序,按照
词频:单词
的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。输入样例:
This is a test. The word "this" is the word with the highest frequency. Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this...# this line should be ignored.
输出样例:(注意:虽然单词
the
也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the
排第3位,所以不输出。)23 5:this 4:is
代码示例:
import sys s = sys.stdin.read() s = s[:s.find('#')] for i in s: if i.isalnum() == False and i != '_': s = s.replace(i, ' ') words1 = s.lower().split(' ') words2 = {} for i in words1: if i == '': continue else: i = i[:15] words2[i] = words2.get(i, 0) + 1 words3 = sorted(words2.items(), key=lambda x:(-x[1],x[0])) print(len(words3)) num = int(len(words3) / 10) for i in range(num): print(str(words3[i][1]) + ':' + str(words3[i][0]))
7-54 学生成绩输入及输出
输入n(1<n<=100)个学生的信息,包括学号、姓名、语文、数学和英语。学号为4位数字组成,成绩为整数,如果不满足此条件,出现异常,如果输入的n不是数字或者 n<=1或n>100,出现异常,输出“输入的人数必须是数字,大于0并且小于等于100”。要求根据3门功课的平均成绩从高分到低分输出每个学生的学号、姓名、3门功课成绩及平均成绩,若平均成绩相同则按语文成绩从高到低排序。
输入格式:
每组测试数据首先输入一个正整数n(1<n<=100),表示学生人数;然后是n行信息,分别表示学生的学号、姓名(长度不超过10且由英文字母构成的字符串)和3门课成绩(正整数)。
输出格式:
如果n出现错误,出现异常。如果n输入正确,输出排序后的学生信息,每行一个学生信息:学号、姓名、语文、数学、英语、平均成绩(保留2位小数),上面每个数据之间留一个空格。
输入样例:
在这里给出多组。例如:
3 0001 zhangsan 80 95 65 0002 lisi 65 52 56 0003 wangwu 87 86 95
输出样例:
在这里给出相应的输出,文件中与输出一样。例如:
0003 wangwu 87 86 95 89.33 0001 zhangsan 80 95 65 80.00 0002 lisi 65 52 56 57.67
代码示例:
try: s=eval(input()) b=[] if s>0 and s<=100: for i in range(s): x=input().split() y=(float(x[2])+float(x[3])+float(x[4]))/3 x.append(y) b.append(x) b=sorted(b,key =lambda x:-int(x[2])) b=sorted(b,key =lambda x:-x[5]) for j in b: print("%s %s %s %s %s %.2f"%(j[0],j[1],j[2],j[3],j[4],float(j[5]))) else: print("输入的人数必须是数字,大于0并且小于等于100") except: print("输入的人数必须是数字,大于0并且小于等于100")