目录
问题 A: 字符串移位
问题 B: 汽车迷
问题 C: 百钱买百鸡A
问题 D: 鸡兔同笼
问题 E: 激活码生成
问题 F: 温度转换异常处理
问题 G: 个税计算器
问题 H: 角古猜想
问题 I: 汉诺塔
问题 J: 求数列之和
问题 A: 字符串移位
题目描述
在两行中分别输入一个字符串s和整数n,定义一个函数将字符串s循环向右移动n位,n为负数时左移。
若s为空字符串”,则不论n为多少,均输出空字符串”。
如 s=’123456′ n=3
输出结果:456123
代码框架如下:
def f(s,n):
......
s=input()
n=int(input())
print(f(s,n))
输入
123456
2
输出
561234
样例输入 复制
123456
1
样例输出 复制
612345
def f(s,n):
temp0=len(s)
if(s==''):
print(s)
else:
if(n>=0):
temp1=(temp0-n)%temp0
else:
temp1=abs(n)%temp0
print(s[temp1:]+s[:temp1])
s=input()
n=int(input())
f(s,n)
问题 B: 汽车迷
题目描述
小明是一个汽车迷,看到什么汽车马上就可以说出汽车的生产年份、型号和品牌。定义一个函数,可以输出汽车的介绍。
例如输入:
2020 AMG_S65 奔驰
可以输出:
这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车
要求函数具有以下功能:当用户只输入生产年份、型号时,品牌按“宝马”输出。
输入
输入用空格分隔的年、型号和品牌(品牌可能没有)
输出
这是一辆年生产,型号是的牌汽车( 根据用户输入进行替换)
样例输入 复制
2020 AMG_S65 奔驰
样例输出 复制
这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车。
def Car(a, b, c='宝马'):
return f'这是一辆{a}年生产,型号是{b}的{c}牌汽车。'
ls = input().split()
print(Car(*ls))
问题 C: 百钱买百鸡A
题目描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
输入
该题目没有输入
输出
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;
如果有多组解时,按鸡翁数量由少到多输出;
for male in range (1,20):
for female in range (33):
for child in range (300):
if(child+female+male==100 and 5*male+3*female+child/3==100):
print(male,female,child)
问题 D: 鸡兔同笼
题目描述
大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的: 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? 这四句话的意思是: 有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔,假设鸡和兔都正常,无残疾。如无解则输出Data Error!
输入
在一行里输入两个整数,用空格分隔
输出
在一行里输出两个正整数,分别是鸡和兔的数量,用空格分隔
如无解则输出Data Error!
样例输入 复制
35 94
样例输出 复制
23 12
def tran(head,leg):
for chicken in range(head+1):
rabbit=head-chicken
if(chicken*2+rabbit*4==leg):
print(chicken,rabbit)
break
else:
print("Data Error!")
head,leg=map(int,input().split())
tran(head,leg)
问题 E: 激活码生成
题目描述
输入一个整数作为随机函数种子,生成5个随机激活码。题目保证测试所用随机因子为整数。
要求1: 使用随机生成时,生成数字概率为1/5,大写字母和小写字母概率各为2/5
要求2: 5个激活码,他们各不相同
要求3: 必须使用randint函数
激活码的长度为10个字符: iZayU25hr9
为满足自动评测要求,本题中概率必须采用randint(1,5)来生成1-5的随机数:
1 生成数字,必须使用randint(0,9)
2,3 生成大写字母
4,5 生成小写字母
提示:字符串连接可使用”+”操作符
使用下列代码生成随机大写字母字符
chr(randint(ord(‘A’),ord(‘Z’)))
输入
输入一个整数
输出
输出5个长度为10的激活码
每行输出一个
样例输入 复制
5
样例输出 复制
iZayU25hr9
ANFf2teA3F
JGvFMANECJ
s9CLPFpBAM
8ls72g3lli
from random import *
n=int(input())
seed(n)
for i in range(5):
key=""
for j in range(10):
choice=randint(1,5)
if(choice==1):
key+=str(randint(0,9))
elif(choice==2 or choice==3):
key+=chr(randint(65,90))
else:
key+=chr(randint(97,122))
print(key)
问题 F: 温度转换异常处理
题目描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F – 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母 C 或小写字母 c 结尾,温度可以是整数或小数,如:12.34C 指摄氏度 12.34 度;
(2) 输入输出的华氏度采用大写字母 F 或小字字母 f 结尾,温度可以是整数或小数,如:87.65F 指华氏度 87.65 度;
(3) 考虑异常输入的问题,如输入不合法则抛出异常;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
输入
输入一个带单位的温度
输出
输入正常,输出转换后的温度,保留小数点后2位小数。
当用户输入值末位不是“C、c、F、f”中的一个时,输出”输入错误,末位只能是’C’,’c’,’F’,’f'”
当检测到NameError错误时输出’试图访问的变量名不存在’
当检测到SyntaxError 错误时输出’存在语法错误’
样例输入 复制
102F
样例输出 复制
38.89C
try:
TempStr = input()
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("{:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
F = 1.8 * eval(TempStr[0:-1]) + 32
print("{:.2f}F".format(F))
else:
print("输入错误,末位只能是'C','c','F','f'")
except NameError:
print('试图访问的变量名不存在')
except SyntaxError:
print('存在语法错误')
问题 G: 个税计算器
题目描述
目前我国个人所得税计算公式如下:
应纳个人所得税税额= (工资薪金所得 -五险一金 – 个税免征额)×适用税率-速算扣除数
个税免征额为5000元/月,2018年10月1日起调整后,也就是2018年实行的7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数
不超过3,000元 3 0
超过3,000元至12,000元的部分 10 210
超过12,000元至25,000元的部分 20 1,410
超过25,000元至35,000元的部分 25 2,660
超过35,000元至55,000元的部分 30 4,410
超过55,000元至80,000元的部分 35 7,160
超过80,000元的部分 45 15,160
请编写一个个税计算器,用户输入为应发工资薪金所得扣除五险一金后的金额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0时,输出“error”。
输入
输入一个表示工资的数值,例如12000.0,此数值为已扣除五险一金后的金额。
输出
应缴税款490.00元,实发工资11510.00元。
样例输入 复制
12000
样例输出 复制
应缴税款490.00元,实发工资11510.00元。
n=eval(input())
x=0
if n<0:
print('error')
else:
if 0<=n<=5000:
x=0
elif 0<n-5000<=3000:
x=(n-5000)*0.03
elif 3000<n-5000<=12000:
x=(n-5000)*0.1-210
elif 12000<n-5000<=25000:
x=(n-5000)*0.2-1410
elif 25000<n-5000<=35000:
x=(n-5000)*0.25-2660
elif 35000<n-5000<=55000:
x=(n-5000)*0.3-4410
elif 55000<n-5000<=80000:
x=(n-5000)*0.35-7160
elif 80000<n-5000:
x=(n-5000)*0.45-15160
y=n-x
print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(x,y))
问题 H: 角古猜想
题目描述
一个正整数,若为偶数,则把它除以2,若为大于 1 的奇数,则把它乘以3加1。经过如此有限次运算后,可以得到整数1。
求经过多少次运算可得到整数1。
输入
输入一个数字
输出
第一行依次输出从n开始每步的运算结果,每步的输出后跟一个空格
第二行输出总的运算次数
若输入数据不是正整数,输出’ERROR‘
样例输入 复制
33
样例输出 复制
33 100 50 25 76 38 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
26
n=eval(input())
temp=0
while 1:
if(n%1!=0):
print("ERROR")
break
elif(n<0):
print("ERROR")
break
print(int(n),end=" ")
if n==1:
print()
print(temp)
break
elif(n%2==0):
n=n/2
temp+=1
elif(n%1!=0):
print("ERROR")
break
else:
n=n*3+1
temp+=1
问题 I: 汉诺塔
题目描述
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
柱子编号为a, b, c,将所有圆盘从a移到c可以描述为: 如果a只有一个圆盘,可以直接移动到c; 如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。 请编写一个函数move(n, a, b, c) ,给定输入 n, a, b, c,打印出移动的步骤: 例如,输入 move(2, ‘A’, ‘B’, ‘C’),打印出: A –> B A –> C B –> C
输入
有两行:
第一行一个正整数
第二行有三个符号,如A、B、C或a,b,c等,输入时用空格分隔开。
输出
移动过程的记录
样例输入 复制
2
A B C
样例输出 复制
A --> B
A --> C
B --> C
def hanoi(n,A,B,C):
global count
if n == 1:
print("{} --> {}".format(A,C))
else:
hanoi(n-1,A,C,B)
print("{} --> {}".format(A,C))
hanoi(n-1,B,A,C)
n=int(input())
X,Y,Z=map(str,input().split())
hanoi(n,X,Y,Z)
问题 J: 求数列之和
题目描述
求s=a+aa+aaa+……+aa…aaa。由键盘输入a和n的值,其中a为一个数字,例如a=3,计算s=3+33+333+3333(此时n=4共有4个数相加)。要求求和功能利用函数实现
样例输入 复制
3 4
样例输出 复制
3702
x,y = map(int,input().split())
s = x
a = s
for i in range(y-1):
x = x * 10
s =s+x
a = a+s
print(a)
今天的文章Contest2554 – 高级语言程序实践–第5次作业–计信A2107-2113分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/40110.html