目录
1 输入一个十进制数,输出二进制,八进制,十六进制数
2 输入一个华氏温度,要求输出摄氏温度,公式为:C=5/9*(F-32)
3 从键盘输入两个整数a和b合并成一个新的四位数,例如:a = 54,b = 12,则c的值为5142
4 财务人员给员工发工资时经常遇到一个问题,即根据每个人的工资金额计算钞票面值的樟树,且总张数最少(100元,50元,20元,10元,5元,1元)
5 输入三角形边长,输出面积
6 输入2个数,输出最大值
7 输入一个整数判断奇数偶数
8 判断一个数是否能被7或11整除但不能同时整除
9 判断某一年是否为闰年:能被4整除但不能被100整除,或者能被400整除
10 《车辆驾驶人员血液、呼气酒精含量阈值与检验》标准中规定:驾驶员血液酒精小于20mg/100ml 不构成酒驾,大于或等于20mg/ml、小于80mg/ml为饮酒驾驶则暂扣6个月机动车驾驶证、1000~2000元罚款、一次记12分;驾驶员血液酒精大于或等于80mg/ml为醉酒驾驶则约束至酒醒、吊销驾驶证、5年内不得重新获取驾驶证、追究刑事责任(注意:饮用350mL(约相当于1小瓶)啤酒或半两白酒(20ml)后,血液酒精浓度可达20mg/100ML,即达到饮酒驾驶的处罚条件)
11 输入三个整数,降序输出
12 输入一个百分之成绩,根据输出等级成绩
13 计算1+2+3+4+5+...+100之和
14 计算a+aa+aaa+a…a前6项之和(a=2)
15 用泰勒级数计算e的近似值,直到最后一项小于1e-6为止,e=1+1/1!+ 1/2! +1/3!+……1/n!
16 计算r=1 时圆的面积直到大于100为止
17 将100到150之间的不能被3整除的数输出,要求一行输出10个数。
18 查找1-99中第一个是2,3,5的最小公倍数的数
19 查找1-99中是2,3,5的最小公倍数的数
20 输入一个整数,判断是否为素数:
21 枚举法:输出100以内的素数
22 枚举法:输出200-400间的非素数
23 枚举法:输出大于m且紧随m的k个素数,如:m = 5 k = 3 结果为:7 11 13
24 输出100以内的能被9整除余数为2的数,计算其平均值的平方根并输出
25 输出水仙花数,是一个三维数,每位数的立方和等于原值,如:153 == 1^3+5^3+3^3
26 输出1000以内的完数,完数:因子之和等于原值,如:6 ==1+2+3
27 输出100以内的同构数,同构数:若一个正整数出现在他的平方数的右侧则为同构数,如:5 ==2 == 5 ==
28 输出100以内的回文数字(整数倒置算法)
29 求a与b之间的最小公倍数
30 求整数x的最大公约数及最小公倍数
31 用户在键盘中输入一个四位数的整数转换为英文输出,如:输入1024 ,打印:One Zero Two Four
32 Fibonacci数列,古典数学问题有一对兔子,从出生后第三个月都生一对兔子,小兔子到第三个月又都生一对兔子,假设兔子不死问每月的兔子数字规律:1 1 2 3 5 8 13 ......
33 计算Fibonacci数列中大于t的最小值,如:t=6 输出:8
34 有一张足够大的纸,厚度为0.09mm,问对折多少次后其厚度会超过珠穆朗玛峰的高度(8848m)
35 爱因斯坦阶梯问题:有多级阶梯,每步跨2阶余1阶、每步跨3阶余2阶、每步跨4阶余3阶、每步跨5阶余4阶、每步跨6阶余5阶、每步跨7阶正好,求解该阶梯一共有多少阶梯
36 百钱买百鸡问题,鸡翁值钱伍,鸡母值钱叁,鸡雏值壹钱,百钱买百鸡,鸡翁,鸡母,鸡雏各几何?
37 搬砖为:36人搬36块砖,男搬4、女搬3,2个小孩抬一块砖,一次性搬完,需要男、女、小孩个多少人
38 猴子偷桃:一天吃一半还要多吃一个,第七天吃完,问偷桃总数为多少?
40.打印如下图形
41.绘制40 图形的倒置
1 输入一个十进制数,输出二进制,八进制,十六进制数
# 1 输入一个十进制数,输出二进制,八进制,十六进制数
num = int(input('请输入一个十进制:'))
print('您输入的十进制数为:', num)
print('转换为二进制为:', bin(num))
print('转换为八进制为:', oct(num))
print('转换为十六进制为:', hex(num))
# 结果:
# 请输入一个十进制:10
# 您输入的十进制数为: 10
# 转换为二进制为: 0b1010
# 转换为八进制为: 0o12
# 转换为十六进制为: 0xa
2 输入一个华氏温度,要求输出摄氏温度,公式为:C=5/9*(F-32)
F = float(input('请输入一个华氏温度:'))
C = 5 / 9 * (F - 32)
print('该华氏温度的摄氏温度为:', C)
# 结果:
# 请输入一个华氏温度:98
# 该华氏温度的摄氏温度为: 36.66666666666667
3 从键盘输入两个整数a和b合并成一个新的四位数,例如:a = 54,b = 12,则c的值为5142
a = int(input('请输入一个两位整数:'))
b = int(input('请输入另一个整数:'))
c = a % 10 * 10 + b % 10 + a // 10 % 10 * 1000 + b // 10 % 10 * 100
print("合并成一个新四位数为:", c)
# 结果:
# 请输入一个两位整数:54
# 请输入另一个整数:12
# 合并成一个新四位数为: 5142
4 财务人员给员工发工资时经常遇到一个问题,即根据每个人的工资金额计算钞票面值的樟树,且总张数最少(100元,50元,20元,10元,5元,1元)
# 方法一
money = int(input('请输入工资金额:'))
print('100元:', money // 100, '张')
print('50元:', money % 100 // 50, '张')
print('20元:', money % 100 % 50 // 20, '张')
print('10元:', money % 100 % 50 % 20 // 10, '张')
print('5元:', money % 100 % 50 % 20 % 10 // 5, '张')
print('1元:', money % 100 % 50 % 20 % 10 & 5 // 1, '张')
# 方法二
money = int(input('请输入工资金额为:'))
print('100元:', money // 100, '张')
money = money % 100
print('100元:', money // 50, '张')
money = money % 50
print('100元:', money // 20, '张')
money = money % 20
print('100元:', money // 10, '张')
money = money % 10
print('100元:', money // 5, '张')
money = money % 5
print('100元:', money // 1, '张')
# 结果:
# 请输入工资金额:1645
# 100元: 16 张
# 50元: 0 张
# 20元: 2 张
# 10元: 0 张
# 5元: 1 张
# 1元: 5 张
5 输入三角形边长,输出面积
# 使用数学模块 math
import math
a = int(input())
b = int(input())
c = int(input())
s = (a + b + c) / 2
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
print(area)
# 不使用数学模块
a = int(input())
b = int(input())
c = int(input())
area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
print(area)
# 结果:
# 3
# 4
# 5
# 6.0
6 输入2个数,输出最大值
a = int(input())
b = int(input())
max = a
if a < b:
max = b
print(max)
# 结果
# 6
# 5
# 6
7 输入一个整数判断奇数偶数
# 方法一
num = int(input("请输入数字:"))
if num % 2 == 1:
print("奇数")
else:
print("偶数")
# 方法二
num = int(input("请输入数字:"))
if num & 1 == 1:
print("奇数")
else:
print("偶数")
# 结果:
# 请输入数字:26
# 偶数
8 判断一个数是否能被7或11整除但不能同时整除
num = int(input("请输入数字"))
if (num % 7 == 0 and num % 11 == 0 and num % 77 != 0):
print("yes")
else:
print('no')
# 结果:
# 请输入数字19
# no
9 判断某一年是否为闰年:能被4整除但不能被100整除,或者能被400整除
year = int(input('请输入年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('%d年是闰年' % year)
else:
print('%d年是平年' % year)
# 结果:
# 请输入年份:2020
# 2020年是闰年
10 《车辆驾驶人员血液、呼气酒精含量阈值与检验》标准中规定:驾驶员血液酒精小于20mg/100ml 不构成酒驾,大于或等于20mg/ml、小于80mg/ml为饮酒驾驶则暂扣6个月机动车驾驶证、1000~2000元罚款、一次记12分;驾驶员血液酒精大于或等于80mg/ml为醉酒驾驶则约束至酒醒、吊销驾驶证、5年内不得重新获取驾驶证、追究刑事责任(注意:饮用350mL(约相当于1小瓶)啤酒或半两白酒(20ml)后,血液酒精浓度可达20mg/100ML,即达到饮酒驾驶的处罚条件)
proof = int(input("请输入100ml血液的酒精含量:"))
if proof < 20:
print("不构成酒驾,请注意安全!")
else:
if proof < 80:
print("酒驾,暂扣6个月机动车驾驶证、1000~2000元罚款、一次记12分")
else:
print("醉驾,约束至酒醒、吊销驾驶证、5年内不得重新获取驾驶证、追究刑事责任")
# 结果:
# 请输入100ml血液的酒精含量:50
# 酒驾,暂扣6个月机动车驾驶证、1000~2000元罚款、一次记12分
11 输入三个整数,降序输出
a = int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
c = int(input('请输入第三个整数'))
if (a > b):
if (a > c):
if (b > c):
print(a, b, c)
else:
print(a, c, b)
else:
print(c, a, b)
else:
if (b > c):
if (a > c):
print(b, a, c)
else:
print(b, c, a)
else:
print(c, b, a)
# 结果:
# 请输入第一个整数1
# 请输入第二个整数2
# 请输入第三个整数3
# 3 2 1
12 输入一个百分之成绩,根据输出等级成绩
x>=90 优秀
90>x>=80 良好
80>x>=60 及格
x<60 补考
num = int(input("请输入百分制成绩:"))
if num > 100 or num < 0:
print("数据错误,请输入0-100范围内数字!")
elif num >= 90:
print("优秀")
elif num >= 80:
print("良好")
elif num >= 60:
print("及格")
else:
print("补考")
# 结果:
# 请输入百分制成绩:86
# 良好
13 计算1+2+3+4+5+...+100之和
# while 循环
sum = 0
i = 1
while i <= 100:
sum += i
i += 1
print("sum = ", sum)
# for循环
sum = 0
for i in range(101):
sum += i
print("sum = ", sum)
# 结果:
# sum = 5050
14 计算a+aa+aaa+a…a前6项之和(a=2)
a = 2
sum = 0
for i in range(6):
sum = sum + a
a = a * 10 + 2
print("sum=", sum)
# 结果:
# 246912
15 用泰勒级数计算e的近似值,直到最后一项小于1e-6为止,e=1+1/1!+ 1/2! +1/3!+……1/n!
sum = 1
t = 1
i = 1
while 1 / t > 1e-6:
t = t * i
sum = sum + 1 / t
i += 1
print("sum=%.6f" % sum)
# 结果:
# sum=2.718282
16 计算r=1 时圆的面积直到大于100为止
import math
for r in range(1, 11):
area = math.pi * r * r
if area > 100:
break
print('r:', r, 'area is :%.6f' % area)
# 结果:
# r: 6 area is :113.097336
17 将100到150之间的不能被3整除的数输出,要求一行输出10个数。
i = 0
for n in range(100, 151):
if n % 3 == 0:
continue
print(n, end=' ')
i += 1
if i % 10 == 0:
print()
# 结果:
# 100 101 103 104 106 107 109 110 112 113
# 115 116 118 119 121 122 124 125 127 128
# 130 131 133 134 136 137 139 140 142 143
# 145 146 148 149
18 查找1-99中第一个是2,3,5的最小公倍数的数
for i in range(1, 100):
if i % 2 == 0 and i % 3 == 0 and i % 5 == 0:
print('%d 是2,3,5,的最小公倍数' % i)
break
else:
print('未找到')
# 结果:
# 30 是2,3,5,的最小公倍数
19 查找1-99中是2,3,5的最小公倍数的数
for i in range(1, 100):
if i % 2 == 0 and i % 3 == 0 and i % 5 == 0:
print('%d 是2,3,5,的最小公倍数' % i)
# break
# 结果:
# 30 是2,3,5,的最小公倍数
# 60 是2,3,5,的最小公倍数
# 90 是2,3,5,的最小公倍数
20 输入一个整数,判断是否为素数:
定义 --- 素数:只能被1和自己本身整除的数称为素数
# 方法1
prime = int(input('请输入一个正整数:'))
if prime < 2: # 保证输入数据大于2
print('请输入大于2的正整数!')
else:
for i in range(2, prime): # 遍历[2,prime-1]
if prime % 2 == 0:
print('平数')
break
else:
print('素数')
# 方法2
prime = int(input('请输入一个正整数:'))
i = 2
if prime < 2: # 保证输入数据大于2
print('请输入大于2的正整数!')
else:
while prime % i:
i = i + 1
if i == prime:
print('平数')
else:
print('素数')
# 方法3
# 筛选法:素数i的倍数一定不是素数,如序列1-20中去掉2的倍数,3的倍数....剩余一定是素数
list1 = list(range(0, 101)) # 产生0-100的列表
print()
i = 2 # 优于最小素数为2,则遍历元素时从2开始,列表中索引与值相同
while i < 100: # 遍历列表
j = list1[i] * 2 # 计算当前值的倍数
while j < 100:
list1[j] = 0 # 将当前的倍数置为0
j = j + list1[i]
i += 1
while list1[i] == 0:
i = i + 1 # 将已经置0的元素排除,不在遍历
for i in range(2, 100):
if list1[i] != 0:
print(list1[i], end=' ')
# 结果:
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
21 枚举法:输出100以内的素数
k = 0
for i in range(2, 100): # 遍历2-99
for j in range(2, i): # 判断i是否为素数
if i % j == 0:
break
else:
print(i, end=" ") # 输出素数
k += 1
if k == 10:
print()
k = 0
# 结果:
# 2 3 5 7 11 13 17 19 23 29
# 31 37 41 43 47 53 59 61 67 71
# 73 79 83 89 97
22 枚举法:输出200-400间的非素数
k = 0
for i in range(200, 400):
for j in range(2, i):
if i % j == 0:
print(i, end=' ')
k = k + 1
if k == 10:
print()
k = 0
break
# 结果:
# 200 201 202 203 204 205 206 207 208 209
# 210 212 213 214 215 216 217 218 219 220
# 221 222 224 225 226 228 230 231 232 234
# 235 236 237 238 240 242 243 244 245 246
# 247 248 249 250 252 253 254 255 256 258
# 259 260 261 262 264 265 266 267 268 270
# 272 273 274 275 276 278 279 280 282 284
# 285 286 287 288 289 290 291 292 294 295
# 296 297 298 299 300 301 302 303 304 305
# 306 308 309 310 312 314 315 316 318 319
# 320 321 322 323 324 325 326 327 328 329
# 330 332 333 334 335 336 338 339 340 341
# 342 343 344 345 346 348 350 351 352 354
# 355 356 357 358 360 361 362 363 364 365
# 366 368 369 370 371 372 374 375 376 377
# 378 380 381 382 384 385 386 387 388 390
# 391 392 393 394 395 396 398 399
23 枚举法:输出大于m且紧随m的k个素数,如:m = 5 k = 3 结果为:7 11 13
m = int(input('请输入起始值:'))
k = int(input('请输入需要的素数个数:'))
i = m + 1
t = 0 # 计数器,记录找到的素数个数
while t < k: # 当自己找到的素数个数小余指定个数时继续寻找
for j in range(2, i):
if i % j == 0: # 判断i是否为素数
break
else:
t = t + 1 # 记录找到的素数个位数
print(i, end=' ') # 输出素数
i = i + 1 # 继续下一个数的寻找
# 结果:
# 请输入起始值:5
# 请输入需要的素数个数:3
# 7 11 13
24 输出100以内的能被9整除余数为2的数,计算其平均值的平方根并输出
aver = 0
t = 0 # 计算器
for i in range(100):
if i % 9 == 2: # 计算对9取余余数为2
print(i, end=' ')
aver = aver + i # 计算和值
t = t + 1 # 记录个数
print('\n aver=%.2f' % ((aver / t) ** 0.5))
# 结果:
# 2 11 20 29 38 47 56 65 74 83 92
# aver=6.86
25 输出水仙花数,是一个三维数,每位数的立方和等于原值,如:153 == 1^3+5^3+3^3
for i in range(100, 1000):
if (i % 10) ** 3 + (i // 10 % 10) ** 3 + (i // 100) ** 3 == i:
print("水仙花数:", i)
# 结果:
# 水仙花数: 153
# 水仙花数: 370
# 水仙花数: 371
# 水仙花数: 407
26 输出1000以内的完数,完数:因子之和等于原值,如:6 ==1+2+3
for i in range(1, 1000): # 遍历0-999,最小完数为6
sum = 0 # 每判断一个i必须先清零其因子之和
for j in range(1, i): # 寻找i的因子
if i % j == 0:
sum = sum + j # 计算因子之和sum
if sum == i: # 判断因子之和是否等于原数
print(i, end=' ')
# 结果:
# 6 28 496
27 输出100以内的同构数,同构数:若一个正整数出现在他的平方数的右侧则为同构数,如:5 ==2 == 5 ==
for i in range(100):
# 100以内的同构数平方后可能为2位数或者为3位数
if i == i * i % 10 or i == i * i % 100:
print(i, end=' ')
# 结果:
# 0 1 5 6 25 76
28 输出100以内的回文数字(整数倒置算法)
for i in range(200):
t = 0 # 倒置后数
m = i
while m > 0: # 对i进行整数倒置
t = t * 10 + m % 10 # 倒置
m = m // 10
if t == i: # 原数判断
print(i, end=' ')
# 结果:
# 0 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 101 111 121 131 141 151 161 171 181 191
29 求a与b之间的最小公倍数
# 方法一
a = int(input('请输入一个数:'))
b = int(input('请输入二个数:'))
i = 1
while 1: # 循环恒真时执行下列语句
if i % a == 0 and i % b == 0:
print('最小公倍数:', i)
break # 第一次找到公倍数时就跳出,保证是最小公倍数
i = i + 1 # 当a =5,b=7时,i循环3*7=35圈
# ——————循环(第一个数×第二个数)次——————
# 方法二
a = int(input('请输入一个数:'))
b = int(input('请输入二个数:'))
i = 0
while 1: # 循环恒真时执行下列语句
if i % a == 0 and i % b == 0:
i += a # i默认是a 的倍数 ,当a =5,b=7时,i循环7圈
print('最小公倍数:', i)
break # 第一次找到公倍数时就跳出,保证是最小公倍数
# ——————循环(第二个数-1)次——————
# 结果:
# 请输入一个数:2
# 请输入二个数:8
# 最小公倍数: 8
30 求整数x的最大公约数及最小公倍数
x = int(input('请输入一个数:'))
y = int(input('请输入二个数:'))
lcm = x + y
while x % y != 0: # 辗转相除法
t = x % y
x = y
y = t
gcd = y # gcd是最大公约数
lcm = lcm // gcd
print('最大公约数:', gcd, "最小公倍数", lcm)
# 结果:
# 请输入一个数:8
# 请输入二个数:2
# 最大公约数: 2 最小公倍数 5
31 用户在键盘中输入一个四位数的整数转换为英文输出,如:输入1024 ,打印:One Zero Two Four
num = int(input('请输入一个四位正数'))
t = 1000
if num >= 1000 and num < 10000:
while t > 0:
if num // t % 10 == 0:
print('Zero', end=' ')
elif num // t % 10 == 1:
print('One', end=' ')
elif num // t % 10 == 2:
print('Two', end=' ')
elif num // t % 10 == 3:
print('Three', end=' ')
elif num // t % 10 == 4:
print('Four', end=' ')
elif num // t % 10 == 5:
print('Five', end=' ')
elif num // t % 10 == 6:
print('Six', end=' ')
elif num // t % 10 == 7:
print('Seven', end=' ')
elif num // t % 10 == 8:
print('Eight', end=' ')
elif num // t % 10 == 9:
print('Nine', end=' ')
t = t // 10
else:
print('输入错误')
# 整数由左向右拆分
# 结果:
# 请输入一个四位正数1024
# One Zero Two Four
32 Fibonacci数列,古典数学问题有一对兔子,从出生后第三个月都生一对兔子,小兔子到第三个月又都生一对兔子,假设兔子不死问每月的兔子数字规律:1 1 2 3 5 8 13 ......
a1 = 1
a2 = 1
for i in range(6):
print(a1, a2, end=' ')
a1 = a1 + a2
a2 = a1 + a2
# 结果:
# 1 1 2 3 5 8 13 21 34 55 89 144
33 计算Fibonacci数列中大于t的最小值,如:t=6 输出:8
t = int(input('请输入一个整数'))
a1 = 0
a2 = 1
a3 = 1
while t >= a3:
a1 = a2
a2 = a3
a3 = a1 + a2
else:
print('大于', t, 'Fibonacci数列中大于t的最小值为:', a3)
# 结果:
# 请输入一个整数6
# 大于 6 Fibonacci数列中大于t的最小值为: 8
34 有一张足够大的纸,厚度为0.09mm,问对折多少次后其厚度会超过珠穆朗玛峰的高度(8848m)
t = 0
h = 0.09e-3 # 纸的厚度,单位统一为米
while 1:
h = h * 2 # 对折,即厚度乘以2
t += 1 # 记录对这厚度
if h > 8848:
break
print("对折", t, "次才能超过珠穆拉玛峰的高度")
# 结果:
# 对折 27 次才能超过珠穆拉玛峰的高度
35 爱因斯坦阶梯问题:有多级阶梯,每步跨2阶余1阶、每步跨3阶余2阶、每步跨4阶余3阶、每步跨5阶余4阶、每步跨6阶余5阶、每步跨7阶正好,求解该阶梯一共有多少阶梯
print("爱因斯坦阶梯问题,求解一共有多少阶阶梯")
t = 0
while 1:
t += 1
if t % 2 == 1 and t % 3 == 2 and t % 4 == 3 and t % 5 == 4 and t % 6 == 5 and t % 7 == 0:
break
print("一共有", t, '阶阶梯')
# 结果:
# 爱因斯坦阶梯问题,求解一共有多少阶阶梯
# 一共有 119 阶阶梯
36 百钱买百鸡问题,鸡翁值钱伍,鸡母值钱叁,鸡雏值壹钱,百钱买百鸡,鸡翁,鸡母,鸡雏各几何?
for cocks in range(101):
for hens in range(101):
for chicks in range(101):
if cocks + hens + chicks == 100 and cocks * 5 + hens * 3 + chicks // 3 == 100 and chicks % 3 == 0:
print("一百文可以买鸡翁:", cocks, '只,鸡母:', hens, "只,鸡雏:", chicks, '只')
# 结果:
# 一百文可以买鸡翁: 0 只,鸡母: 25 只,鸡雏: 75 只
# 一百文可以买鸡翁: 4 只,鸡母: 18 只,鸡雏: 78 只
# 一百文可以买鸡翁: 8 只,鸡母: 11 只,鸡雏: 81 只
# 一百文可以买鸡翁: 12 只,鸡母: 4 只,鸡雏: 84 只
37 搬砖为:36人搬36块砖,男搬4、女搬3,2个小孩抬一块砖,一次性搬完,需要男、女、小孩个多少人
for man in range(10):
for girl in range(13):
for child in range(73):
if man + girl + child == 36 and man * 4 + girl * 3 + child // 2 == 36 and child % 2 == 0:
print("男:", man, '女:', girl, "小孩:", child)
# 结果:
# 男: 3 女: 3 小孩: 30
38 猴子偷桃:一天吃一半还要多吃一个,第七天吃完,问偷桃总数为多少?
n = 0
for i in range(7):
n = (n + 1) * 2
print("偷桃总数:", n)
# 结果:
# 偷桃总数: 254
40.打印如下图形
h = int(input('请输入图形高度:'))
for i in range(h):
for j in range(h - i - 1):
print(" ", end='')
for k in range(2 * i + 1):
print('*', end='')
print()
# 结果:
# 请输入图形高度:5
# *
# ***
# *****
# *******
# *********
41.绘制 40 图形的倒置
h = int(input('请输入图形高度:'))
for i in range(h):
for j in range(i):
print(" ", end='')
for k in range(2*(h-i)-1):
print('*', end='')
print()
# 结果:
# 请输入图形高度:5
# *********
# *******
# *****
# ***
# *