python123.io题库答案大全
同学们在看之前可以点个或收藏赞同嘛 ,学长搜集整理不容易,还有另外几篇文章也是python
(完整题库请:南果湖零六)
计算整数各位数字之和
num=input()
sum=0
for c in num:
sum=sum+int(c)
print(sum)
整数四则运算
A=int(input(""))
B=int(input(""))
print("{} + {} = {}".format(A,B,A+B))
print("{} – {} = {}".format(A,B,A-B))
print("{} * {} = {}".format(A,B,A*B))
print("{} / {} = {}".format(A,B,A/B))
计算整数n的阶乘
a=input()
b="."
c="0"
d=eval(a)
import math
if b in a or a<c:
print("ERROR")
else:
print(math.factorial(d))
字符串类型的基本操作
a=input("")
b=input("")
print(a+b)
print(a*3)
print(b[2],b[-1])
print(a[1:4])
print(str(len(a))+','+str(len(b)))
print(min(a),max(b))
字符串属性联系
id = input() # 输入学号
name = input() # 输入姓名
print(id+name) # 输出学号姓名,中间无空格
print(name*5) # 重复输出姓名5遍,中间无空格
s = '人都可以走路,也就是有一个走路方法' # 这是一个字符串
n=eval(input()) # 接收一个整数输入n
print(s[n]) # 输出字符串s中序号为n的字符
print(s[::2]) # 输出字符串s中序号为偶数的字符
print(s[::-1])# 将字符串逆序输出
print(len(s)) # 输出字符串s的长度
print(len(s[n:])) # 输出字符串s中从序号n到字符串结尾包含的字符个数(包括序号为n的字符)
print(s.count("走路")) # 输出字符串s中子字符串‘走路’的个数
print(s.index("走")) # 输出字符串s中字符‘走’第一次出现的位置序号
test = input() # 输入一个字符串
test in s
print("True")
字符串方法练习
s = input() # 输入一个英文字符串
print(s.upper()) # 将字符串中所有英文字符转为大写输出
print(s.lower()) # 将字符串中所有英文字符转为小写输出
t = s.split() # 将输入的字符串根据空格切分为列表,命名为t,每个单词为一个元素
print(t) # 输出切分的列表
print(' '.join(t)) # 将列表t中的元素用空格连接后输出
print('-'.join(t)) # 将列表t中的元素用连字符“-”连接后输出
print('/'.join(t)) # 将列表t中的元素用'/'连接后输出
print(s.index("the")) # 搜索字符串s中是否存在字符串'the',如存在返回其位置序号
r = s.replace("the","a") # 将字符串s中所有的'the'替换为'a',替换后的字符串重新命名为r
print(r) # 输出替换后的字符串r
r = s.replace("the","a",1)# 将字符串s中的第一个'the'替换为'a',替换后的字符串重新命名为r
print(r)# 输出替换后的字符串r
计算整数各位数字之和
num=input()
sum=0
for c in num:
sum=sum+int(c)
print(sum)
整数四则运算
A=int(input(""))
B=int(input(""))
print("{} + {} = {}".format(A,B,A+B))
print("{} – {} = {}".format(A,B,A-B))
print("{} * {} = {}".format(A,B,A*B))
print("{} / {} = {}".format(A,B,A/B))
表达式求值
利用下面公式计算并输出 x 的值。
(提示:开平方可以用指数运算 a ** (1 / 2) 或 a ** 0.5来实现,也引入数学库math,再用数学库中的math.sqrt()函数实现)
a=eval(input())
b=eval(input())
c=eval(input())
x=(-b+(b**2-4*a*c)**0.5)/(2*a)
print('%.2f' % x)
圆的面积
描述
输入半径r,输出以r为半径的圆的面积。使用math库中的数学函数math.pi,如果输入数据为负数,输出”ERROR“
# math.pi的导入方法是在程序开头加上下面一行代码,程序中用 math.pi 表示 pi
import math
输入格式
输入一个浮点数,表示半径的值
import math
r=float(input())
if int(r)<0:
print("ERROR")
else:
area=math.pi*r**2
print(area)
三角形周长及面积
描述
输入的三角形的三条边a、b、c 的长度,计算并依次输出三角形的周长和面积。测试用例的数据保证三角形三边数据可以构成三角形。
三角形面积计算公式:
,其中s=(a+b+c)/2。
import math #导入math库
math.sqrt(x) #调用sqrt函数实现开平方运算,x表示要求值的数据
# 或用幂运算 x ** 0.5 表示开平方
a=eval(input())
b=eval(input())
c=eval(input())
s=(a+b+c)/2
area=(s*(s-a)*(s-b)*(s-c))**(1/2)
l=a+b+c
print('周长={:.2f}'.format(l))
print('面积={:.2f}'.format(area))
字符拼接
描述
用户输入用半角逗号(英文的逗号)分隔的多个字符,在一行内输出去掉逗号的一个字符串。
n=input()
print(n.replace(",",""))
换披萨
描述
披萨的尺寸一般分6-15英寸几种,一英寸约等于2.54厘米,将英寸直径乘以2.54即可得出以厘米为单位的直径。例如6寸披萨,即为6乘以2.54,得出结果为15.24厘米。 然而披萨加工时并不是严格到毫米不差的,考虑到加工过程及无效的披萨边,真正的有效直径需要去掉小数点后面数字。例如6寸披萨的标准直径为15.24厘米,实际有效直径一般为15厘米。
披萨店经常会对顾客说:您订购的某尺寸的披萨卖完了,是否可以更换为多个小尺寸的披萨。例如:您订购的9寸披萨卖完了,可以给您2个6寸的披萨吗?
假设披萨厚度相同,价格与面积成正比,试问一个m英寸的大披萨至少要更换几个n英寸的小披萨,顾客才不吃亏?
a=eval(input())
b=eval(input())
a=int(a*2.54)
b=int(b*2.54)
a=(a/2.0)**2
b=(b/2.0)**2
ans=0
for i in range(1,100):
if b*i>=a:
ans=i
break
print(ans)
179
三角函数计算
描述
根据下面公式计算并输出x的值,a和b的值由用户输入,括号里的数字是角度值, 要求圆周率的值使用数学常数math.pi,三角函数的值用math库中对应的函数进行计算 。
import math
a=eval(input())
b=eval(input())
y=math.radians(120)
x=(-b+(a*math.sin(y))**(1/2))/(2*a)
print(x)
41592360969076
最大公约数和最小公倍数
描述
在两行中分别输入一个正整数M,N,输出这两个数的最大公约数和最小公倍数。
import math
M=int(input())
N=int(input())
c=math.gcd(M,N)
d=int(M*N/c)
print(c,d)
92360980670
个人信息提取(字符串)
描述
用户输入自己的个人信息,格式如下:
0122923450321 王昊 法学1801 河北 2001年
数据分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
有些用户没有按照规则输入数据,输入自己出生年份的时候写成了类似‘1900年生’的数据,题目保证这些用户输入年份时一定是以四位数字开始
请注意程序仍然需要正确读取该项数据
请按照输出样式输出姓名,班级,年龄
提示:
列表中的数据和字符串当中的字符一样,都具有有序的索引,且引用数据和切片方式一致。
s=input().split()
a = s[1]
b = s[2]
c = s[4][:4]
d=2020-int(c)
print("姓名:"+a)
print("班级:"+b)
print("年龄:"+str(d)+"岁")
念数字
描述:
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
num=input()
ls=['ling','yi','er','san','si','wu','liu','qi','ba','jiu']
r=''
if int(num)<0:
m=num[1:]
for c in m:
s=int(c)
r=r+ls[s]+' '
a='fu '+r
print(a.strip())
else:
for c in num:
b=int(c)
r=r+ls[b]+' '
print(r.strip())
反转一个整数
描述
输入一个非 0 十进制整数(不允许前导0的存在,即不允许类似 0123 这样的输入),将其反转输出。
num = input()
if int(num) < 0:
x = num[1:]
y = int(x)
print('-'+str(int(x[::-1])))
else:
print(int(num[::-1]))
分数数列求前n项和
描述
2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前 n 项之和
n=int(input())
sum=0
fz=2
fm=1
for i in range(n):
sum=sum+fz/fm
fm,fz=fz,fz+fm
print(sum)
求数列前n项的平方和
描述
现有数列:1,2,3,4,……,n,计算并输出其前n项的平方和,即求:
1×1+2×2+3×3+……+n×n的和。
n=int(input())
sum=0
for i in range(1,n+1):
sum=sum+i**2
print(sum)
货币转换
描述
编写一个美元与人民币转换的程序,用户输入金额和汇率,输出转换为另一种货币表示的金额。
(美元用符号’$’表示,人民币用’¥’表示,¥ 可以在中文输入法下按shift+4)
输入格式
第一行输入一个以货币符号结尾的正数,数值作为金额,货币符号表明货币种类
第二行输入一个正数作为汇率
输出格式
输入符合要求时输出一个带货币符号的数值(保留2位小数)
输入不符合要求时输出Data error!
m=input()
h=eval(input())
if "$" in m:
a=eval(m.strip("$"))
c=("%.2f"%(a*h))
print(str(c)+"¥")
elif '¥' in m:
b=eval(m.strip("¥"))
d=("%.2f"%(b/h))
print(str(d)+"$")
else:
print("Data error!")
7227
月份缩写
描述
如果有 months = "Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec.",编写一个程序,用户输入一个月份的数字,输出月份的缩写。
当输入的数字不在1~12之间时,输出“请输入1~12之间的数字!”
输入格式
一个整数
输出格式
输入1-12间的数字时,输出一个代表月份的缩写的字符串
否则输出“请输入1~12之间的数字!”
months = "Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec."
n=int(input())
if 1<=n<=12:
a=months[4*n-4:4*n]
print(a)
else:
print("请输入1~12之间的数字!")
61106412
手机号替换
描述
用户输入一个11位的纯属数字的手机号码,将4-7位用 “*” 替换掉,以保护隐私。
输入格式
输入一个11位的纯属数字的手机号码
输出格式
替换后的手机号
phone=input()
a=phone[0:3]
b="****"
c=phone[7:]
print(a+b+c)
61134044
个税计算器
描述
目前我国个人所得税计算公式如下:
应纳个人所得税税额= (工资薪金所得 -五险一金 – 个税免征额)×适用税率-速算扣除数
个税免征额为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元。
n=eval(input())
m=n-5000
if -5000<=m<=0:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(0),'%.2f'%(n)))
elif 0<m<=3000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.03),'%.2f'%(n-m*0.03)))
elif 3000<m<=12000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.1-210),'%.2f'%(n-m*0.1+210)))
elif 12000<m<=25000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.2-1410),'%.2f'%(n-m*0.2+1410)))
elif 25000<m<=35000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.25-2660),'%.2f'%(n-m*0.25+2660)))
elif 35000<m<=55000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.3-4410),'%.2f'%(n-m*0.3+4410)))
elif 55000<m<=80000:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.35-7160),'%.2f'%(n-m*0.35+7160)))
elif 80000<m:
print('应缴税款{}元,实发工资{}元。'.format('%.2f'%(m*0.45-15160),'%.2f'%(n-m*0.45+15160)))
else:
print('error')
361151390
各位数字之和为5的数
描述
输入一个1000以内的正整数 n,在同一行内输出 [0,n] 之间各位数字之和为5的数,数字之间用空格分开(行末有一个空格)。
n = int(input())
for num in range(n+1):
if sum(map(int, str(num)))==5:
print(num, end = ' ')
61161098
身高测算
描述
测算身高,单位为厘米,公式参考下列:
男性身高=(父亲身高+母亲身高)×1.08÷2
女性身高=(父亲身高×0.923+母亲身高)÷2
性别输入"男"或“女”,本题保证所有测试输入身高数据为整型,输出结果取整。如果性别输入不符合要求,则输出“无对应公式”
a=int(input())
b=int(input())
c=input()
if c == '男':
print(int((a+b)*1.08/2))
elif c =='女':
print(int((a*0.923+b)/2))
else:
print('无对应公式')
1592361173385
判断火车票座位
描述
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'。
每个车厢座位排数是1-17,字母不区分大小写。
输入格式
输入一个数字和字母组合成的字符串
输出格式
'窗口'或'过道' 或'输入错误'
a=input()
if len(a)==2:
if(a[-1] in 'AFCEDafcde'):
if a[-1] in 'AaFf':
print('窗口')
if a[-1] in 'cDdC':
print('过道')
else:
print("输入错误")
elif len(a)==3:
if 10<=int(a[0:2])<=17 and (a[-1] in 'AFCEDafcde'):
if a[-1] in 'AafF':
print('窗口')
if a[-1] in 'cCDd':
print('过道')
else:
print("输入错误")
else:
print('输入错误')
今天是第几天
描述
输入年/月/日(用斜杠分隔),输出该日期是这一年的第几天(题目保证年、月、日都是合法输入)?
输入格式
年/月/日
输出格式
某年某月某日是某年第多少天
a,b,c=map(int, input().split('/'))
ls=[31,28,31,30,31,30,31,31,30,31,30,31]
d=0
for i in range(1,b):
d=int(ls[i-1]+d)
if b>2:
if a%4==0 and a%100!=0 or a%400==0 :
print(str(a)+'年'+str(b)+'月'+str(c)+'日是'+str(a)+'年第'+str(c+d+1)+'天')
else:
print(str(a)+'年'+str(b)+'月'+str(c)+'日是'+str(a)+'年第'+str(c+d)+'天')
else:
print(str(a)+'年'+str(b)+'月'+str(c)+'日是'+str(a)+'年第'+str(c+d)+'天')
密码修改(选择)
描述
模拟修改密码:本题默认用户已经正确登录,初始密码为“123456”,作为模拟程序,需要首先输出原始密码,然后输入两次新的密码,如果两次输入相同,则修改密码成功,提示“Overwrite Success”,否则输出提示信息"Different Input"。无论是否修改成功,最后均需要输出当前可使用的密码。
输入格式
在两行中各输入一次新密码
输出格式
输出有三行,第一行输出原密码,第二行输出是否修改成功的提示语,第三行输出当前有效密码,中间没有空行(格式参考示例)。
m1=input()
m2=input()
print("123456")
if m1==m2:
print("Overwrite Success")
print(m1)
else:
print("Different Input")
print("123456")
正负交错数列前n项和
描述
1-1/2+2/3-3/5+4/8-5/13+…的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。
输入格式
一个正整数
输出格式
前n项的和
s=int(input())
sum=1
c=1
d=1
if s==0:
sum=0
elif s==1:
sum=1
elif s>1:
for i in range(1,s):
a=i
b=c+d
c=d
d=b
sum+=a/b*pow(-1,i)
print('{:.6f}'.format(sum))
求数列前n项的平方和
描述
现有数列:1,2,3,4,……,n,计算并输出其前n项的平方和,即求:
1×1+2×2+3×3+……+n×n的和。
输入
输入一个正整数 n
输出
数列前n项的平方和
n=int(input())
sum=0
for i in range(1,n+1):
sum=sum+i**2
print(sum)
2361251556
计算整数各位数字之和
描述
输入一个正整数,计算其各个位的数字之和
输入
输入一个正整数
输出
各位上数字之和
def xj(num):
return sum(int(i) for i in str(num) if i.isdigit())
if __name__ == '__main__':
num = input()
print('{}'.format(xj(num)))
百分制成绩转换五分制(循环)
描述
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。输入数据不合法时输出“data error!”。用户可反复输入成绩进行转换,输入负数时输出“end”并结束程序
输入格式
每次输入一个浮点数,代表百分制成绩;反复输入,输入负数结束程序
输出格式
根据每一次的输入值分别输出A、B、C、D、E中的一个字母或"data error!"或"end"。输出end时程序结束。
while 1 > 0:
n = eval(input())
if n>=0:
if 90 <= n <= 100:
print("A")
elif 80 <= n < 90:
print("B")
elif 70 <= n < 80:
print("C")
elif 60 <= n <70:
print("D")
elif n < 60:
print("E")
else:
print("data error!")
else:
print("end")
break
361279713
百钱买百鸡A
描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
输入格式
该题目没有输入
输出格式
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;
如果有多组解时,按鸡翁数量由少到多输出;
for cock in range(1,20):
for hen in range(1,34):
chicken = 100 – cock – hen
if chicken % 3 == 0 and 5 * cock + 3 * hen + chicken // 3 == 100:
print(cock, hen, chicken)
分类统计字符个数
描述
编写程序,用户输入一个字符串,以回车结束,统计字符串里英文字母、数字字符和其他字符的个数(回车符代表结束,不计入统计)。
输入格式
一个以回车结束的字符串
输出格式
letter = 英文字母个数, digit = 数字字符个数, other = 其他字符个数
s=input()
x,y,z=0,0,0
for c in s:
if ord('a')<=ord(c)<=ord('z') or ord('A')<=ord(c)<=ord('Z'):
x=x+1
elif ord('0')<=ord(c)<=ord('9'):
y=y+1
else:
z=z+1
print('letter = {}, digit = {}, other = {}'.format(x,y,z))
水仙花数
描述
水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例如:1**3 + 5**3+ 3**3 = 153),输出所有3位的水仙花数。
输入格式
无
输出格式
按从小到大的顺序输出全部水仙花数,每行一个。
for num in range(100, 1000):
gewei = num % 10
shiwei = num // 10 % 10
baiwei = num//100
if gewei**3 + shiwei**3 + baiwei**3 == num:
print(num)
判断闰年
描述
写一个程序用于判断用户输入的年份是不是闰年,如果是输出“True”,如果不是输出“False”。
输入格式
输入一个代表年份的正整数
输出格式
“True”或“False”
year=int(input())
if (year%4==0 and year%100!=0) or year%400==0:
print("True")
else:
print("False")
棋盘放米
描述
相传古代印度国王舍罕要褒赏他的聪明能干的宰相达依尔 (国际象棋发明者),问他需要什么?
达依尔回答说:“国王只要在国际象棋的棋盘第一个格子里放一粒麦子,第二个格子里放两粒,第三个格子里放四粒,按此比例以后每一格加一倍,一直放到64格(国际象棋棋盘是8×8=64格),我就感恩不尽,其他的我什么也不要了。”
国王想:“这有多少,还不容易!”让人扛来一袋小麦,但不到一会儿全用没了,再来一袋很快又没有了,结果全印度的粮食全部用完还不够,国王纳闷,怎样也算不清这笔账,请你帮国王计算一下,放到第 n (1<= n <=64)格时,共需多少粒麦子,写出程序。
输入格式
输入一个小于等于64的正整数 n
输出格式
一个正整数,表示多少粒麦子
n=int(input())
sum=0
for i in range(n):
sum=sum+2**i
print(sum)
数列求和
描述
给定某数字A(1≤A≤9)以及非负整数N,求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,SumOfn=1+11+111=123。
输入格式
第一行输入一个整数A,且该数介于1至9之间(包含1和9)
第二行输入一个非负整数N
输出格式
输出其 N 项数列之和的值。
当输入不符合要求时输出:'data error'
A=input()
N=int(input())
s=0
if int(A)<1 or int(A)>9 or N<0:
print("data error")
else:
for i in range(N):
s=s+int(A*(i+1))
print(s)
立方尾不变
描述
有些数字的立方的末尾正好是该数字本身,比如1(立方是1)、4(立方是64)、5(立方是125),还有6、9、24、25……。题目输入一个N(已保证1<=N<=10000),请计算输出1到N之间所有的立方尾不变数及个数。
输入格式
输入一个整数N (测试数据保证1<=N<=10000)
输出格式
输出为两行:
第一行是以空格分开的一些立方尾不变数,这些数处于[1,N]区间内(每个数字末尾有一个空格);
第二行是一个整数,为[1,N]区间内立方尾不变数字的个数。
N=int(input())
z=0
for i in range(1,N+1):
a=str(i**3)
b=len(str(i))
if i==int(a[-b:]):
z=z+1
print(i,end=" ")
print()
print(z)
求e的近似值B
描述
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。
本题要求用该公式计算e的近似值,直至公式里最后一项(1/n!)小于给定的阀值为止(小于给定阀值的第一项也要计入)。
输入格式:
输入一个小于1的浮点数做为阀值
输出格式:
输出满足阈值条件的近似e,输出保留小数点后八位。
def jc(n):
a = 1
for i in range(n + 1):
if i > 0:
a *= i
return a
error = input()
error = float(error)
sum = 0
n = 0
while 1 / jc(n) > error:
sum += 1 / jc(n)
n += 1
sum += 1/jc(n)
print("%.8f" % sum)
最大素数
描述
用户输入一个正整数 N,计算并输出不大于 N 的最大素数。
输入格式
输入一个正整数 N (N > 1)
输出格式
满足条件的素数
N=int(input())
s=""
for i in range(2,N+1):
for i2 in range(2,i):
if i%i2==0:
break
else:
s=s+","+str(i)
ls=s.split(",")
print(ls[-1])
兔子繁殖问题
描述
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,用户输入一个月份数,计算并在一行内输出该月的兔子总对数以及前一个月与该月兔子数量的比值,比值结果保留小数点后3位,数字间用空格分隔。
输入
一个不小于2的正整数
输出
在一行内输出两个数,数之间用空格隔开。第一个是整数,表示本月的兔子数,第二个是浮点数(保留小数点后三位),表示前一个月兔子数与本月兔子数的比值。
n=int(input())
f1=1
f2=0
for i in range(1,n+1):
s=f1+f2
a=f1
f1,f2=f2,f1+f2
b=("%.3f"%((s-a)/s))
print(s,b)
自幂数
描述
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身,例如:1**3 + 5**3+ 3**3 = 153,编程寻找并输出 n 位的自幂数,n 由用户输入,每行输出一个数字。
n为1时,自幂数称为独身数。显然,0,1,2,3,4,5,6,7,8,9都是自幂数。
n为2时,没有自幂数。
n为3时,自幂数称为水仙花数,有4个
n为4时,自幂数称为四叶玫瑰数,共有3个
n为5时,自幂数称为五角星数,共有3个
n为6时,自幂数称为六合数, 只有1个
n为7时,自幂数称为北斗七星数, 共有4个
n为8时,自幂数称为八仙数, 共有3个
n为9时,自幂数称为九九重阳数,共有4个
n为10时,自幂数称为十全十美数,只有1个
输入格式
输入一个大于或等于 3 且小于 7 的正整数 n
输出格式
按从小到大的顺序输出 n 位的自幂数,每行一个数
n = int(input())
for num in range(10 ** (n-1),10 ** n):
temp = num
result = 0
while temp != 0:
last = temp % 10
temp = temp // 10
result = result + last ** n
if result == num:
print(num)
用户登录C
描述
实现用户输入用户名和密码,当用户名为 admin或administrator且密码为123456时,显示“登录成功”,否则显示“登录失败”,登录失败时允许重复输入三次。
输入格式
用户在两行里分别输入用户名和密码
输出格式
"登录成功"或"登录失败"
输入 | 输出 | |
示例 1 | admin 123456administrator123456 |
登录成功 登录成功 |
a=1
while a <=3:
name= input()
passward=input( )
if (name== 'administrator' or name=='admin') and passward== '123456':
print('登录成功')
break
else:
print('登录失败')
a=a+1
今年多少天?
描述
闰年366天,其他年份365天。普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
用户输入一个正整数,代表年份,输出该年有多少天?
输入格式
输入一个正整数,表示年份
输出格式
该年的天数
N = int(input())
if N%100 != 0:
if N%4 == 0:
print(366)
else:
print(365)
elif N%100 == 0:
if N%400 == 0:
print(366)
else:
print(365)
else:
print(365)
966
老鼠打洞
描述:
《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文这么说的:今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?
这道题的意思就是说,有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。
(注:本题禁止使用幂运算)
输入格式:
输入1个整数,代表墙的厚度,单位为尺
输出格式:
第一行输出1个整数,表示相遇时所需的天数
第二行输出2个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1位数字。
width=int(input())
speed1=speed2=1
i=0
a=b=0
while True:
a=a+speed1
b=b+speed2
sum=a+b
i=i+1
speed1=speed1/2
speed2=speed2*2
if sum>width:
print(i)
s=width-(a-speed1*2+b-speed2/2)
a=a-speed1*2+s*speed1*2/(speed1*2+speed2/2)
b=b-speed2/2+s*speed2/2/(speed1*2+speed2/2)
print('{:.1f} {:.1f}'.format(a,b))
break
else:
continue
模拟生成微软序列号
描述
微软产品一般都一个25位的序列号,是用来区分每份微软产品的产品序列号。产品序列号由五组被“-”分隔开,由字母数字混合编制的字符串组成,每组字符串是由五个字符串组成。如:
36XJE-86JVF-MTY62-7Q97Q-6BWJ2
每个字符是取自于以下24个字母及数字之中的一个:
B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9
采用这24个字符的原因是为了避免混淆相似的字母和数字,如I 和1,O 和0等,避免产生不必要的麻烦。
随机数种子函数语法为:random.seed(n)
本题限制应用random.choice()方法每次获得一个随机字符!!!
输入格式
在2行中各输入一个正整数:
第1个整数代表要生成的序列号的个数
第2个正整数代表随机数种子
输出格式
指定个数的序列号
a=int(input())
b=int(input())
import random
random.seed(b)
for i in range(a):
c=""
for i1 in range(5):
Characters="BCEFGHJKMPQRTVWXY2346789"
s=""
for i2 in range(5):
s=s+random.choice(Characters)
if i1==0:
c=c+s
else:
c=c+"-"+s
print(c)
03994
鸡兔同笼B
描述
一个笼子里面关了若干只鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外),已经知道了笼子里面脚的总数feet,则笼子里至少有多少只动物,至多有多少只动物?
输入格式
第一行输入一个正整数,表示测试数据的组数n
接下来的n行,每行一个整数,代表脚的数量
输出格式
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数间用一个空格分开
如果没有满足要求的答案,则输出用空格分隔的两个0
n=int(input())
for k in range(n):
b=int(input())
if b%2==0:
j=b/4
i=b%4/2
min=int(i+j)
max=int(b/2)
else:
min=max=0
print(min,max)
生成快递自提柜取件码
描述
import random
random.seed(n)
很多校园都放置了大量的快递自提柜,放入快递时生成一个取件码发给用户,用户凭取件码自行提取货物。取件码的字符包括:数字0-9和字母A、B、C、D、E、F、G、H、I、J。每次从以上字符串 'ABCDEFGHIJ0123456789'中随机取一个字符,重复6次, 生成一个形如“9I16A4”的取件码,各字符的使用次数无限制。随机数种子 n 由用户输入。
输入格式
输入一个正整数
输出格式
输出一个包含 6 个字符的字符串
import random
n=eval(input())
random.seed(n)
s=""
for i in range(6):
Characters="ABCDEFGHIJ0123456789"
s=s+random.choice(Characters)
print(s)
出租车计费
描述
某城市出租车计费标准如下:
(1)起步里程为3公里(含3公里),起步费13元;
(2)载客里程3~15公里范围的,除起步费外,超过3公里的部分按基本单价2.3元/公里计算;
(3)载客里程超过15公里的,15公里内的按照(2)计算,超过15公里的基本单价加收50%的费用;
(4)时速低于12公里/小时的慢速行驶时间计入等待时间,每等待1分钟加收1元;
请输入乘车里程(整数)、等待时间,输出车费。
输入格式
在同一行输入两个正整数,分别表示行驶里程与等待时间,数字间以半角逗号分隔。
输出格式
输出车费,保留0位小数
a=input()
ls=a.split(",")
b=int(ls[0])
c=int(ls[1])
if 0<=b<=3:
cost=13+c
print(int(cost))
elif 3<b<=15:
cost=13+(b-3)*(2.3)+c
print(int(cost))
else:
cost=40.6+(b-15)*(3.45)+c
print(int(cost))
素数
描述
用户输入一个正整数,在一行内输出不大于该数的所有素数,各数后面用一个空格分隔。
输入格式
输入一个正整数
输出格式
不大于该数的所有素数,各数后面用一个空格分隔。
n=int(input())
for i in range(2,n+1):
for j in range(2,i):
if i%j==0:
break
else:
print(i,end=" ")
角古猜想
描述
输入一个正整数,若为偶数,则把它除以2,若为大于 1 的奇数,则把它乘以3加1。经过如此有限次运算后,可以得到数值1。求经过多少次可得到数1。
第一行依次输出从n开始每步的运算结果。
第二行输出总的运算次数
比如输入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
如输入数据不是正整数,输出’ERROR‘
n=eval(input())
count=0
if n>0 and type(n)==int:
print(n,end=' ')
while True:
if n%2!=0 and n!=1:
n =3 * n + 1
count+=1
print(n,end=' ')
elif n%2==0:
n =int( n/2)
count+=1
print(n,end=' ')
else:
print()
break
print(count)
elif n <= 0:
print('ERROR')
else:
if type(n) is not int:
print('ERROR')
回文数变形计
描述:
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。设n是一任意自然数,将n的各位数字反向排列得到自然数n1,若n1与n相等,则称n为回文数。例如12521就是一个回文数。
给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。例如:数字87则有:
STEP1: 87+78=165
STEP2: 165+561=726
STEP3: 726+627=1353
STEP4: 1353+3531=4884
现在给你一个正整数M(12 <= M <= 100,M本身不为回文数),输出最少经过几步可以得到回文数。
规定如果在6步以内(含6步)不可能得到回文数,则输出0。
例如:M=87,则输出4
输入格式:
输入为一行,给出一个12到100之间的非回文数。
输出格式:
如果输入的数字不能通过6步变形得到回文数,则输出0;如果输入的数字可以通过6步内的变形得到回文数,则输出变形所需的步数。
def huiwen(n):
if str(n)==str(n)[::-1]:
return True
else:
return False
def hezhi(n):
return n+int(str(n)[::-1])
n=int(input())
for i in range(1,7):
n=hezhi(n)
if huiwen(n):
print(i)
break
else:
print('0')
ATM存取款
描述
模拟ATM存取款过程,题目默认用户已经登录,账户余额为1000元。
功能及流程:
1. 输入"1"代表取款,"2"代表存款。输入其他数据给出提示信息“Wrong Option”
2. 输入存取款金额,并对账户余额进行操作。操作完毕后显示账户余额。取款时要判断余额是否满足取款要求,若余额不足给出提示信息“Insufficient Funds”
注意:ATM上是只能存入和取出大于等于100且是100的整数倍金额。如果金额不符合规则将给出提示信息“Incorrect Amount”.
op = eval(input())
Balance=1000
if op == 1:
money = eval(input())
if money % 100 == 0:
if money <= Balance:
print('Balance:{}'.format(1000 – money))
else:
print('Insufficient Funds')
else:
print('Incorrect Amount')
elif op == 2:
money = eval(input())
if money % 100 == 0:
print('Balance:{}'.format(1000 + money))
else:
print('Incorrect Amount')
else:
print('Wrong Option')
模拟砍价
描述
某电商平台开发出一个新功能:友谊验真器。“是不是朋友,帮忙砍一刀!”
一件商品价格为 price 元,假设每位朋友帮忙砍价都是整数,最少可以砍掉0元,最多只能砍掉不超过商品标价十分之一的价钱,请问每件商品至少要多少人帮忙砍价才能0元拿?
本题使用random函数库,要求使用random.randint()函数生成每次砍价的整数金额
输入格式
在一行中输入用逗号分隔的2个正整数,分别代表商品标价和随机数种子
输出格式
砍价到0元的最少次数
import random
price,number=map(int,input().split(','))
random.seed(number)
count=0
randomint=int(price/10)
while True:
price-=random.randint(0,randomint)
count+=1
if price<=0:
break
print(count)
判断丑数
描述
我们把只包含质因子2、3、5的自然数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数,所有非正整数都不是丑数。若输入不是整数时,直接输出"Error"并结束程序。若输入为整数,判断输入的数是否是丑数,是丑数时输出“True”,不是丑数时输出"False"。
输入格式
输入一个数字 n。
输出格式
当n不是整数时输出:Error
当n是丑数时输出:True
当n不是丑数时输出:False
n=eval(input())
if type(n)==int:
if n<=0:
print('False')
else:
ls=[2,3,5]
for i in ls:
while n % i == 0:
n = n//i
if n ==1:
print('True')
else:
print('False')
else:
print('Error')
个人信息提取(控制结构)
描述
用户输入自己的个人信息,格式如下:
0122923450321 王昊 法学1801 河北 2001年
数据分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
有些用户没有按照规则输入数据,输入自己出生年份的时候写成了类似‘1900年生’或‘出生于1985’或‘19岁生于2006年11月’的数据格式
请注意程序仍然需要正确读取该项数据,本题保证这些用户输入时一定只含有1个4位数字连续组成的年份数据。
请按照输出样式输出姓名,班级,年龄
提示:
列表中的数据和字符串当中的字符一样,都具有有序的索引,且引用数据和切片方式一致。
str.isdigit()可以帮助判断字符串是否全部由数字字符组成,返回值为'True'或'False'
输入示例
0122923450321 王昊 法学1801 河北 2001年
输出示例
姓名:王昊
班级:法学1801
年龄:19岁
输入 | 输出 | |
示例 1 | 0122923450321 王昊 法学1801 河北 2001年 | 姓名:王昊班级:法学1801年龄:19岁 |
a=input()
l=a.split()
b=l[4]
c=len(b)
for i in range(c-3):
if b[i:i+4].isdigit()==True:
d=int(b[i:i+4])
break
print("姓名:{}".format(l[1]))
print("班级:{}".format(l[2]))
print("年龄:{}岁".format(2020-d))
物不知其数
描述
在我国古代算书《孙子算经》中有这样一个问题:
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”
意思是,“一个数除以3余2,除以5余3,除以7余2.求适合这个条件的最小数。”
请给出你的解法
输入格式
此题无输入
输出格式
一个正整数
i = 0
while True:
i +=1
if i%3 == 2 and i%5 == 3 and i%7 == 2:
print(i)
Break
判断素数函数
描述
写一个函数isPrime(n)用于判断一个数字n是不是素数,用户输入一个正整数,在一行内输出不大于该数的所有素数,各数后面用一个空格分隔。
输入格式
输入一个正整数
输出格式
不大于该数的所有素数,各数后面用一个空格分隔。
def isPrime(n): # 定义判断素数的函数
for i in range(2,n):
if n%i==0:
return False
return True
# 补充你的代码在这里
num = int(input()) # 接收用户输入并转成整数
for i in range(2,num+1):
if isPrime(i):
print(i,end=' ')# 补充你的代码在这里
592361785636
二分法求平方根B
描述
设计一个用二分法计算一个大于或等于 0 的实数 n 的平方根的函数sqrt_binary(n),实数 n和计算精度控制由用户在同一行内输入,用逗号进行分隔,输出结果保留8位小数。当(abs(x * x – n) )小于或等于设定的精度时,近似认为 x * x == n。
注:初始区间取[0,n+0.25]
输入格式
在同 行内输入一个实数 n(大于或等于0)和一个代表精度的数字(可用1e-m格式输入)
输出格式
第一行输出用自己设计的函数计算得到的平方根
第二行输出用math库开平方函数计算得到的平方根
import math
n, m=map(float, input().split(','))
below=0
top=n+0.25
mid=(top+below)/2
while abs(mid**2-n)>m:
if mid**2>n:
top=mid
else:
below=mid
mid=(top+below)/2
print('{:.8f}'.format(mid))
print('{:.8f}'.format(math.sqrt(n)))
特殊数列求和
描述
用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和,当输入大于或等于10时,输出“data error!”
输入格式
一个小于10的正整数
输出格式
数列的前 n 项和或“data error!”
n=int(input())
item=''
sum=0
if 0<n<10:
for i in range(1,n+1):
item=item+str(i)
sum=sum+int(item)
print(sum)
else:
print("data error!")
回文素数
描述
回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。
用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。
输入格式
输入一个正整数
输出格式
符合要求的回文素数
def isPrime(n):
if n <= 1:
return False
for i in range(2,int(n ** 0.5) + 1):
if n % i == 0:
return False
else:
return True
n = int(input())
i = 2
count = 0
while count < n:
if str(i) == str(i)[::-1] and isPrime(i):
print(i,end = ' ')
count = count + 1
i = i+ 1
哥德巴赫猜想
描述
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。输入一个大于2的正整数,当输入为偶数时,在一行中按照格式“N = p + q”输出N的素数分解,其中p 、 q均为素数且p ≤ q。因为这样的分解可能不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。当输入为奇数时,输出'Data error!' 。
输入格式
输入一个不小于2的正整数
输出格式
当输入为偶数时,按照格式“N = p + q”输出N的素数分解;当输入为奇数时,输出'Data error!' 。
def isprime(n):
if n<2:
return False
else:
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
n=int(input())
if n%2!=0:
print('Data error!')
else:
num=1
while True:
if isprime(num) and isprime(n-num):
print('N = {} + {}'.format(num,n-num))
break
else:
num=num+1
自定义幂函数
描述
定义一个函数实现整数的幂运算,用以计算 x 的 n 次方。
输入格式
在一行内输入两个非负整数 x 和 n,数字间用空格分隔。
输出格式
x 的 n 次幂的运算结果
def power(x,n):
result = 1
for i in range (n):
result=result*x
return result
a,m=map(int,input().split())
print(power(a,m))
编写函数输出自除数
描述
一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例如128是一个自除数,因为128能被1、2、8整除。编写函数selfDivisor(num)判断num是否为自除数,使用该函数输出不大于N的所有自除数。
(注意,含有数字0的数不是自除数)
输入格式:
输入为一行,一个正整数N(N>=1)。
输出格式:
输出为一行,是不大于N的所有自除数,每个数后面有一个空格。
def selfDivisor(n):
a=str(n)
if '0' not in a:
for c in a:
if n%int(c) != 0:
break
else:
return True
n=int(input())
for i in range(1,n+1):
if selfDivisor(i) == True:
print(i,end=' ')
华氏度转摄氏度速查表
描述
已知华氏温度转换摄氏温度的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
编写函数F2C(f)将华氏温度转换为摄氏温度,读入两个华氏温度值f1和f2,打印范围在f1~f2内,每次增加两个华氏温度刻度的速查表。
注意:如果f1>f2,则直接打印error。
输入格式:
输入为一行,为两个不小于32的正整数f1和f2,表示两个华氏温度。两个数之间用逗号隔开,形如f1,f2。
输出格式:
如果f1>f2,输出error。
如果f1<=f2,则输出华氏转摄氏的温度转换速查表,速查表可能有多行,每行一个温度转换对,形如f1 : c1,其中c1保留小数点两位。速查表以2华氏度为刻度。
def F2C(f1,f2):
s=''
if f1>f2:
return 'error'
elif f1==f2 or f2-f1 == 1 :
return '{} : {}'.format(f1,'%.2f'%(5*(f1-32)/9))
else:
for i in range(f1,f2+1,2):
s=s+ '{} : {}\n'.format(i,'%.2f'%(5*(i-32)/9))
return s
f1,f2=map(int,input().split(','))
print(F2C(f1,f2))
贪心的交易(函数)
描述
商品价格每天都在变化,作为一个商人,需要低买高卖赚取利润,通常会根据历史数据,检验策略的收益。
已知有一个商品历史价格变化列表。其中第 i 个元素是第 i 天该商品的价格。
现在使用的贪心策略是在该过程中要求必须尽可能多的进行获利的交易,并且每次买入时都要先清仓(全部卖出上一次买入的商品),不能同时进行多笔交易。
定义一个函数,计算你在这种策略下能的最大利润。
比如价格列表为 [1,3,5,1,8],利润最大为11元,
第1天买入,第2天卖出 获利3-1=2元
第2天买入,第3天卖出 获利5-3=2元
第4天价格跌落,所以第三天无交易
第4天买入,第5天卖出 获利8-1=7元
总利润为 2+2+7=11元
本题的编程模板会帮助你建立一个随机的价格列表(价格在1-100元的闭区间中),你需要在两行中各输入一个整数,第一行输入一个可交易的总天数(即列表中的价格个数),第二行输入一个整数做为随机种子。
输出时模板会在两行中分别输出生成的价格列表以及能的最大利润。
提示:列表的索引使用方式与字符串相同。
输入
在两行输入中各输入一个整数
输出
生成的价格列表
的最大利润
import random
def f(ls):
c=0
sum=0
while c != n-1:
if ls[c] < ls[c+1]:
sum=sum+ls[c+1]-ls[c]
c=c+1
else:
c=c+1
return sum
n=int(input())
m=int(input())
random.seed(m)
ls=[random.randint(1,100) for i in range(0,n)]
print(ls)
print(f(ls))
1901485
字母查找(函数)
描述
定义一个函数来判断单词m是否可以由字符串n中出现的字母来组成。
本题保证字符串中出现的字母均为小写字母,且不考虑n中的字母使用次数
在两行中分别输入两个字符串m,n
如果m,n 满足条件,则输出’FOUND‘ ,否则输出'NOT FOUND'
如果输入的m包含有除字母外的其他字符,输出’ERROR‘结束
def f(m,n):
for c in m:
if c not in n:
return 'NOT FOUND'
return 'FOUND'
m=input()
if m.isalpha() == True:
n = input()
print(f(m,n))
else:
print('ERROR')
奇偶求和
描述
输入一个完全由数字字符组成的字符串s,分别统计其中出现的奇数和偶数字符数值之和
如输入‘123456789’
输出 oddsum=25,evensum=20
本题需要使用自定义函数完成,建议代码框架如下:
def f(n):
……def p(t):
……def …….
s=input()print('oddsum={},evensum={}'.format(……))
输入输出示例
输入 | 输出 | |
示例 1 | 123456789 | oddsum=25,evensum=20 |
def f(s):
sum=0
for c in s:
if int(c) % 2 == 0:
sum=sum+int(c)
return sum
def g(s):
sum=0
for c in s:
if int(c) % 2!= 0:
sum=sum+int(c)
return sum
s=input()
print('oddsum={},evensum={}'.format(g(s),f(s)))
字符串移位
描述
在两行中分别输入一个字符串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))
def f(s,n):
if s == '':
return ''
else:
a=len(s)
b=a-n%a
return s[b:]+s[:b]
s=input()
n=int(input())
print(f(s,n))
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/12239.html