Python期末基础题目

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) =

捕获.JPG

输入格式:

在一行输入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位同学,剩下的苹果交还老师。请编写程序,解决下述问题:

  1. 每位同学能分得几个苹果?
  2. 一共分出去多少个苹果?
  3. 交还老师的苹果有几个?

输入样例:

输入苹果总数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. 从键盘读入矩形的长,以厘米为单位,应为小数;
  2. 从键盘读入矩形的宽,以厘米为单位,应为小数;
  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 字符替换

本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)

原字母对应字母
AZ
BY
CX
DW
......
XC
YB
ZA

输入格式:

在一行中输入字符串

输出格式:

在一行中给出替换完成后的字符串。

输入样例:

在这里给出一组输入。例如:

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 XX表示查找字符

输入样例:

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)越远,每公里运费越低。标准如下:

捕获.PNG


其中基本运输费用为每吨每公里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行字符串中:

  1. 不同字符的个数。
  2. 每种字符出现的次数。

函数接口定义:

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. 第1行输出不同字符的个数。
  2. **=**两边应有空格。
  3. 上述输出样例中第2行的字符是空格。
  4. 输出按照字符升序排列。

代码示例:

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)方法

  1. 构造方法,来构造每个具体的学生对象
  2. 计算总成绩方法getSum(self),返回三个成绩的和
  3. 获得优异生姓名,数学成绩,语文成绩,英语成绩的方法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 三维向量运算

设计一个三维向量类,实现向量加法、减法以及向量与标量的乘法和除法运算。后面添加下面代码完成:

捕获.JPG

输入样例:

 
 

输出样例:

(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")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值