python第六次作业

1.讲控制台用户登录注册购买英雄案例、

2.markdown前60道题,

第一部分:

Demo01 摄氏温度转化为华氏温度

题目描述

输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出

转换的公式为如下:

输入输出描述

输入一个值表示摄氏温度celsius

输出华氏温度fahrenheit ,结果保留一位小数点

示例

输入:

43

输出:

109.4

 
  1. celsius = float(input("输入:\n"))

  2. fahrenheit = (9/5) * celsius + 32

  3. print("输出:\n",fahrenheit)

Demo02 计算圆柱体的体积

题目描述

输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。

输入输出描述

分别输入圆柱的半径radius和高度length,两个数据之间用空格分隔

输出两行,第一行为圆柱底面积area,第二行为圆柱体积volume,结果保留两位小数点

示例

输入:

5.5 12

输出:

95.03

1140.41

 
  1. import math

  2. a , b = map(float,input("输入:\n").split())

  3. area = a * a * math.pi

  4. tj = area * b

  5. print("输出:\n%.2f\n%.2f" %(area,tj))

Demo03 将英尺数转换为米数

题目描述

输入英尺数然后将它转换为米数,并输出结果,一英尺等于0.305米

输入输出描述

输入一个数据表示英尺数

输出转换后的米数,结果保留四位小数点

示例

输入:

16.5

输出:

5.0325

 
  1. a = float(input("输入:\n"))

  2. b = a * 0.305

  3. print("输出:\n",b)

Demo04 计算小费

题目描述

读取小计和酬金率,然后计算小费以及合计金额。例如客户的小计为10元,酬金率为15%,那么小费是1.5元,合计金额为11.5元

输入输出描述

分别输入小计和酬金率,两个数据用之间用空格分隔

输出两行,第一行为小费,第二行为合计金额,结果保留两位小数

示例

输入:

15.69 15

输出:

2.35

18.04

 
  1. a , b = map(float,input("输入:\n").split())

  2. c = a * b/100

  3. d = a + c

  4. print("输出:\n%.2f\n%.2f" %(c,d))

Demo05 对一个整数中的各位数字求和

题目描述

读取一个0到1000之间的整数,并计算它各位数字之和

输入输出描述

输入一个[0,1000]之间的整数

输出该数字的各位数字之和

示例1

输入:

999

输出:

27

解释:

999各位数之和为9 + 9 + 9 = 27

示例2

输入:

12

输出:

3

 
  1. i = int(input("输入:\n"))

  2. a = int(i/100) % 10

  3. b = int(i/10) % 10

  4. c = i % 10

  5. sum = a + b + c

  6. print("输出:\n",sum)

Demo06 计算年数和天数

题目描述

输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天

输入输出描述

输入一个分钟数

输出两行,第一行为年数,第二行为天数

示例

输入:

1000000000

输出:

1902

214

 
  1. a = int(input("输入:\n"))

  2. day = a//1440

  3. year = a//525600

  4. print("输出:\n",year)

  5. print(day)

Demo07 计算能量

题目描述

水从初始温度加热到最终温度是需要能量的,请计算需要多少能量,公式如下:

这里的M是按千克计的水量,初始温度和最终温度均为摄氏度,热量Q以焦耳计

输入输出描述

输入三行数据,第一行输入水量,第二行输入初始温度,第三行输入最终温度

输出所需的能量值,结果保留一位小数

示例

输入:

55.5

3.5

10.5

输出:

1625484.0

 
  1. a = float(input("输入:\n"))

  2. b = float(input())

  3. c = float(input())

  4. Q = a * (c - b) * 4184

  5. print("输出:\n",Q)

Demo08 分割数字

题目描述

输入一个四位整数,并以反向顺序显示

输入输出描述

输入一个四位整数

输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位

示例

输入:

5213

输出:

3

1

2

5

 
  1. a = float(input("输入:"))

  2. b = int(a/1000%10)

  3. c = int(a/100%10)

  4. d = int(a/10%10)

  5. e = a % 10

  6. f = e * 1000 + d * 100 + c * 10 + b

  7. print("输出:\n",e,d,b,c)

Demo09 计算三角形的面积

题目描述

输入三角形的三个顶点坐标,并计算其面积,计算公式如下

输入输出描述

输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔

输出三角形的面积,结果保留一位小数

示例

输入:

1.5 -3.4 4.6 5 9.5 -3.4

输出:

33.6

 
  1. import math

  2. x1 , y1 , x2 , y2 , x3 , y3 = map(float,input("输入:\n").split())

  3. side1 = math.sqrt((x1-x2)**2+(y1-y2)**2)

  4. side2 = math.sqrt((x1-x3)**2+(y1-y3)**2)

  5. side3 = math.sqrt((x2-x3)**2+(y2-y3)**2)

  6. s = (side1+side2+side3)/2

  7. area = float(math.sqrt(s*(s-side1)*(s-side2)*(s-side3)))

  8. print("输出:\n",area)

Demo10 显示当前时间

题目描述

输入你所在的时区,并输出当前的时间

输入输出描述

输入时区,如东八区为8,西五区为-5

输出二十四小时制的时间,格式为 时:分:秒

示例

输入:

8

输出:

21:43:12

Demo11 计算三角形的三个角

题目描述

输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制)

其中a、b、c分别表示三条边,A、B、C分别表示三边对应的角

输入输出描述

输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔

输出三行,分别为A、B、C三个角的度数,结果保留两位小数

示例

输入:

1 1 6.5 1 6.5 2.5

输出:

15.26

90.00

74.74

 
  1. from cmath import cos

  2. import math

  3. x1 , y1 , x2 , y2 , x3 , y3 = map(float,input("输入:\n").split())

  4. a = math.sqrt((x1 - x2)**2 + (y1 -y2)**2)

  5. b = math.sqrt((x1 - x3)**2 + (y1 -y3)**2)

  6. c = math.sqrt((x3 - x2)**2 + (y3 -y2)**2)

  7. A = math.degrees(math.acos((a*a-b*b-c*c)/(-2*b*c)))

  8. B = math.degrees(math.acos((b*b-a*a-c*c)/(-2*a*c)))

  9. C = math.degrees(math.acos((c*c-b*b-a*a)/(-2*a*b)))

  10. print(C)

  11. print(B)

  12. print(A)

Demo12 最小数量的硬币

题目描述

假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币

输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少

输入输出描述

输入总金额

输出每种硬币的个数

示例

输入:

11.56

输出:

11个一元硬币

2个两角五分硬币

0个一角硬币

1个五分硬币

1个一分硬币

 
  1. money = float(input(""))

  2. a = money // 1

  3. b = (money - a) // 0.25

  4. c = (money - a - (b*0.25))// 0.1

  5. d = (money - a - (b*0.25) - (c*0.1))// 0.05

  6. e = (money - a - (b*0.25) - (c*0.1) - (d*0.05))//0.01

  7. print("%.0f个一元硬币" %a)

  8. print("%.0f个两角五分硬币" %b)

  9. print("%.0f个一角硬币" %c)

  10. print("%.0f个五分硬币" %d)

  11. print("%.0f个一分硬币" %e)

Demo13 正多边形的面积

题目描述

正多边形是边长相等的多边形,而且所有的角相等,计算正多边形的公式为:

输入输出描述

输入两个数据分别表示边的个数n和边的长度s,数据之间用空格分隔

输出边长为s的正n多边形的面积,结果保留两位小数

示例

输入:

5 6.5

输出:

72.69

 
  1. import math

  2. n , s = map(float,input("输入:\n").split())

  3. area = (n * s * s) / (4 * math.tan(math.pi/n))

  4. print("%.2f"%area)

Demo14 计算身体质量指数

题目描述

BMI是根据体重测量健康的方式,通过以千克为单位的体重除以以米为单位的身高的平方计算而出

BMI指数解读如下:

BMI解释
BMI < 18.5超轻
18.5 ≤ BMI < 25.0标准
25.0 ≤ BMI < 30.0超重
30.0 ≤ BMI肥胖

输入输出描述

输入体重和身高,数据之间用空格分隔

输出BMI指数结果

示例

输入:

60 1.8

输出:

标准

 
  1. sg = float(input("请输入身高(m):"))

  2. tz = float(input("请输入体重(kg):"))

  3. BMI = tz / (sg*sg)

  4. if BMI < 18.5:

  5. print("过轻")

  6. elif 18.5 <= BMI < 24:

  7. print("正常")

  8. elif 24 <= BMI < 27:

  9. print("过重")

  10. elif 27 <= BMI < 30:

  11. print("轻度肥胖")

  12. elif 30 <= BMI < 35:

  13. print("中度肥胖")

  14. elif BMI >= 35:

  15. print("重度肥胖")

Demo15 判定闰年

题目描述

一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年

输入输出描述

输入一个年份

输出Yes表示该年份为闰年,No则表示不是闰年

示例1

输入:

2008

输出:

Yes

示例2

输入:

2002

输出:

No

 
  1. year = int(input("请输入一个年份:"))

  2. if year % 4 == 0 & year % 100 != 0 | year % 400 == 0:

  3. print("该年为闰年")

  4. else:

  5. print("该年为平年")

Demo16 中彩票

题目描述

随机产生一个两位数数字,然后用户输入一个两位数数字,并根据以下规则判定用户赢得的奖金是多少

(1)输入的数字和随机产生的数字完全相同(包括顺序),奖金为10000元

(2)输入的数字和随机产生的数字相同(不包括顺序),奖金为3000元

(3)输入的数字和随机产生的数字有一位数相同,奖金为1000美元

(4)输入的数字和随机产生的数字都不相同,没有奖金,0元

输入输出描述

输入一个两位数

输出两行,第一行输出那个随机产生的两位数,第二行输出用户的奖金

示例1

输入:

12

输出:

12

10000

示例2

输入:

12

输出:

21

3000

示例3

输入:

12

输出:

23

1000

示例4

输入:

12

输出:

45

0

 
  1. # import random

  2. # num = random.randint(10,100)

  3. # print(num)

  4. # a = int(input("请输入一个两位数:"))

  5. # num_2 = num // 10 % 10

  6. # num_1 = num % 10

  7. # a_2 = a // 10 % 10

  8. # a_1 = a % 10

  9. # if a == num:

  10. # print("恭喜你获得10000元")

  11. # elif a_1 == num_2 and a_2 == num_1:

  12. # print("恭喜你获得3000元")

  13. # elif a_1 == num_2 or a_2 == num_1 or a_1 == num_1 or a_2 == num_2:

  14. # print("恭喜你获得1000元")

  15. # elif a_1 != num_2 and a_2 != num_1 and a_1 != num_1 and a_2 != num_2:

  16. # print("你太黑了,未中奖🤣🤣🤣")

  17. import random

  18. num = random.randint(10,100)

  19. a = int(input())

  20. num_2 = num // 10 % 10

  21. num_1 = num % 10

  22. a_2 = a // 10 % 10

  23. a_1 = a % 10

  24. print(num)

  25. if a == num:

  26. print("10000")

  27. elif a_1 == num_2 and a_2 == num_1:

  28. print("3000")

  29. elif a_1 == num_2 or a_2 == num_1 or a_1 == num_1 or a_2 == num_2:

  30. print("1000")

  31. elif a_1 != num_2 and a_2 != num_1 and a_1 != num_1 and a_2 != num_2:

  32. print("0")

Demo17 解一元二次方程

题目描述

一元二次方程$ax^2+bx+c=0 (a != 0)$的解可以使用下面的公式计算

其中$b^2-4ac$称为判别式,如果它为正,则方程有两个实数解;为零,方程只有一个实数解;为负,没有实数解

输入输出描述

输入a、b、c三个数据,数据之间用空格分隔

两个解每行输出一个;一个解单行输出;无解则单行输出无实数解,保留两位小数

示例1

输入:

1.0 3 1

输出:

-0.38

-2.62

示例2

输入:

1 2.0 1

输出:

-1.00

-2.62

示例3

输入:

1 2 3

输出:

无实数解

 
  1. import math

  2. a , b , c = map(float,input("输入:\n").split())

  3. r1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)

  4. r2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a)

  5. if b * b - 4 * a * c > 0:

  6. print(r1)

  7. print(r2)

  8. elif b * b - 4 * a * c == 0:

  9. print(r1)

  10. elif b * b - 4 * a * c < 0:

  11. print("无实数解")

Demo18 解2×2线程方程

题目描述

如有一个2×2的线程方程组:

你可以使用克莱姆法则解该线性方程:

其中$ad-bc$为判别式,如果为零则输出无解

输入输出描述

输入a、b、c、d、e、f六个数据,数据之间用空格分隔

输出两行,第一行x的解,第二行y的解,保留一位小数

示例1

输入:

9.0 4.0 3.0 -5.0 -6.0 -21.0

输出:

-2.0

3.0

示例2

输入:

1.0 2.0 2.0 4.0 4.0 5.0

输出:

无解

 
  1. a , b , c , d , e , f = map(float,input("输入:\n").split())

  2. x = (e * d - b * f) / (a * d - b * c)

  3. y = (a * f - e * c) / (a * d - b * c)

  4. a * x + b * y == e

  5. c * x + d * y == f

  6. if a * d - b * c == 0:

  7. print("无解")

  8. else:

  9. print(x)

  10. print(y)

Demo19 未来是周几

题目描述

输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,...,星期六是6)

并输入今天之后到未来某天的天数,然后输出该天是星期几

输入输出描述

输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔

输出未来某天是星期几

示例1

输入:

1 3

输出:

星期四

示例2

输入:

0 31

输出:

星期三

 
  1. a , b = map(int,input("输入:\n").split())

  2. c = b % 7

  3. if a + c % 7 == 1:

  4. print("星期一")

  5. elif a + c % 7 == 2:

  6. print("星期二")

  7. elif a + c % 7 == 3:

  8. print("星期三")

  9. elif a + c % 7 == 4:

  10. print("星期四")

  11. elif a + c % 7 == 5:

  12. print("星期五")

  13. elif a + c % 7 == 6:

  14. print("星期六")

  15. elif a + c % 7 == 7:

  16. print("星期天")

Demo20 本年中的第几天

题目描述

给定某年、某月、某日的一个日期,计算该日是今年中的第几天

输入输出描述

输入三个数据分别表示年、月、日,数据之间用空格分隔

输出该日是今年中的第几天

示例1

输入:

2023 1 28

输出:

28

示例2

输入:

2023 3 2

输出:

61

 
  1. a , b , c = map(int,input("输入:\n").split())

  2. if a % 4 == 0 & a % 100 != 0 | a % 400 == 0:

  3. if b == 1:

  4. day = c

  5. print(c)

  6. elif b == 2:

  7. day = 31 + c

  8. print(c)

  9. elif b == 3:

  10. day = 31 + 28 + c

  11. print(c)

  12. elif b == 4:

  13. day = 31 + 28 + 31 + c

  14. print(c)

  15. elif b == 5:

  16. day = 31 + 28 + 31 + 30 + c

  17. print(c)

  18. elif b == 6:

  19. day = 31 + 28 + 31 + 30 + 31 + c

  20. print(c)

  21. elif b == 7:

  22. day = 31 + 28 + 31 + 30 + 31 + 30 + c

  23. print(c)

  24. elif b == 8:

  25. day = 31 + 28 + 31 + 30 + 31 + 30 + 31 + c

  26. print(c)

  27. elif b == 9:

  28. day = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + c

  29. print(c)

  30. elif b == 10:

  31. day = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + c

  32. print(c)

  33. elif b == 11:

  34. day = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + c

  35. print(c)

  36. elif b == 12:

  37. day = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + c

  38. print(c)

  39. else:

  40. if b == 1:

  41. day = c

  42. print(c)

  43. elif b == 2:

  44. day = 31 + c

  45. print(c)

  46. elif b == 3:

  47. day = 31 + 29 + c

  48. print(c)

  49. elif b == 4:

  50. day = 31 + 29 + 31 + c

  51. print(c)

  52. elif b == 5:

  53. day = 31 + 29 + 31 + 30 + c

  54. print(c)

  55. elif b == 6:

  56. day = 31 + 29 + 31 + 30 + 31 + c

  57. print(c)

  58. elif b == 7:

  59. day = 31 + 29 + 31 + 30 + 31 + 30 + c

  60. print(c)

  61. elif b == 8:

  62. day = 31 + 29 + 31 + 30 + 31 + 30 + 31 + c

  63. print(c)

  64. elif b == 9:

  65. day = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 30 + c

  66. print(c)

  67. elif b == 10:

  68. day = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + c

  69. print(c)

  70. elif b == 11:

  71. day = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + c

  72. print(c)

  73. elif b == 12:

  74. day = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + c

  75. print(c)

Demo21 剪刀石头布I

题目描述

计算机随机产生一个数字0、1和2分别表示剪刀、石头和布

用户输入数字0、1或2,输出用户赢、计算机赢或平局

输入输出描述

输入数字0、1或2

输出有三行,第一行输出计算机出的啥,第二行输出用户出的啥,第三行输出结果

示例1

输入:

0

输出:

计算机出的 石头

用户出的 剪刀

计算机赢

示例2

输入:

1

输出:

计算机出的 剪刀

用户出的 石头

用户赢

示例3

输入:

2

输出:

计算机出的 布

用户出的 布

平局

 
  1. import random

  2. while True:

  3. b = random.randint(1,4)

  4. a = int(input("请输入1-3(1代表剪刀,2代表石头,3代表布)之间整数:"))

  5. if (a == 1 and b == 2) or (a == 2 and b == 3) or (a == 3 and b == 1):

  6. print("兄弟再练练吧🤣🤣🤣!")

  7. elif a == b:

  8. print("点到为止,平手😊😊😊!")

  9. else:

  10. print("有两把刷子哟👍👍👍!")

Demo22 三角形的周长

题目描述

输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法

如果任意两边之和大于第三边则输入都是合法的

输入输出描述

输入三个数据表示三边,数据之间用空格分隔

输出三角形的周长,如果非法则输出非法

示例1

输入:

1 1 1

输出:

3

示例2

输入:

1 3 1

输出:

非法

 
  1. a , b , c = map(float,input("输入:\n").split())

  2. if a + b > c and b + c > a and a + c > b:

  3. zc = a + b + c

  4. print(zc)

  5. else:

  6. print("非法")

Demo23 一周的星期几

题目描述

泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下:

(1)$h$是指一周的星期几(0表示星期六、1表示星期天、...、6表示星期五)

(2)$q$是一个月的哪一天

(3)$m$是月份(3表示三月、4表示四月、...、12表示十二月),其中一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年

(4)$j$是世纪数,即$\lfloor\frac{year}{100}\rfloor$

(5)$k$是一个世纪的某一年,即$year \% 100$

(6)$\lfloor\rfloor$为向下取整符号

输入输出描述

输入年、月、日三个数据,数据之间用空格分隔

输出该日是周几

示例1

输入:

2013 1 25

输出:

星期五

示例2

输入:

2012 5 12

输出:

星期六

Demo24 直线的交点

题目描述

直线A上的两个点是$(x1,y1)$和$(x2,y2)$,直线B上的两个点是$(x3,y3)$和$(x4,y4)$

如果两条直线有交点,可以通过解下面的线性等式找出:

如果没有解,则表示两条直线平行

输入输出描述

输入八个数据,分别为x1 y1 x2 y2 x3 y3 x4 y4,数据之间用空格分隔

如有交点则输出交点的坐标x y,否则输出两条直线平行

示例1

输入:

2 2 5 -1 4 2 -1 -2

输出:

2.89 1.11

示例2

输入:

2 2 7 6 4 2 -1 -2

输出:

两条直线平行

Demo25 回文数

题目描述

输入一个三位整数,然后判断其是否为一个回文数

如果一个数从左向右和从右向左读取时是一样的,那么这个数就是回文数

输入输出描述

输入一个数字

输出Yes表示是回文数,否则输出No

示例1

输入:

121

输出:

Yes

示例2

输入:

123

输出:

No

 
  1. a = input("输入:\n")

  2. b = a[::-1]

  3. if a == b:

  4. print("Yes")

  5. else:

  6. print("No")

Demo26 两个矩形

题目描述

判断两个矩形之间的关系:包含,重叠,相离

输入输出描述

输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高

输出两者的关系

示例1

输入:

2.5 4 2.5 43

1.5 5 0.5 3

输出:

包含

示例2

输入:

1 2 3 5.5

3 4 4.5 5

输出:

重叠

示例3

输入:

1 2 3 3

40 45 3 2

输出:

相离

第二部分:

Demo27 打印数字I

题目描述

利用循环,寻找规律,打印如下数字模式:

模式A
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
模式B
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
模式C
          1
        2 1
      3 2 1
    4 3 2 1
  5 4 3 2 1
6 5 4 3 2 1
模式D
1 2 3 4 5 6
  1 2 3 4 5
    1 2 3 4
      1 2 3
        1 2
          1
 
  1. print("模式A")

  2. layer = 6

  3. for i in range(1,layer+1):

  4. for j in range(1,i+1):

  5. print(j,end="")

  6. print()

  7. print("模式B")

  8. for i in range(layer,0,-1):

  9. for j in range(1,i+1):

  10. print(j,end="")

  11. print()

  12. print("模式C")

  13. for i in range(layer+1):

  14. print(" "*(layer - i),end=" ")

  15. for j in range(i,0,-1):

  16. print(j,end="")

  17. print()

  18. print("模式D")

  19. for i in range(layer,0,-1):

  20. print(" "*(layer - i),end=" ")

  21. for j in range(1,i+1):

  22. print(j,end="")

  23. print()

Demo28 打印数字II

题目描述

利用循环,寻找规律,打印如下数字模式:

            1
          2 1 2
        3 2 1 2 3
      4 3 2 1 2 3 4
    5 4 3 2 1 2 3 4 5
  6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
 
  1. layer = 7

  2. for i in range(1,layer+1):

  3. print(" "*(layer - i),end=" ")

  4. for j in range(i , 0 ,-1):

  5. print(j ,end="")

  6. for j in range(2 , i+1):

  7. print(j ,end="")

  8. print()

Demo29 打印数字III

题目描述

利用循环,寻找规律,打印如下数字模式:

                        1
                    1   2   1
                1   2   4   2   1
            1   2   4   8   4   2   1
        1   2   4   8   16  8   4   2   1
    1   2   4   8   16  32  16  8   4   2   1
1   2   4   8   16  32  64  32  16  8   4   2   1
 
  1. layer = 7

  2. for i in range(1,layer+1):

  3. print(" "*2*(layer - i),end=" ")

  4. for j in range(1 , i+1 ):

  5. print(2**(j-1) ,end=" ")

  6. for j in range(i-1 , 0,-1):

  7. print(2**(j-1),end=" ")

  8. print()

Demo30 打印菱形I

题目描述

如下所示,是一个高度为9的菱形

    *
   * *
  * * *
 * * * *
* * * * *
 * * * *
  * * *
   * *
    *

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

示例

输入:

5

输出:

  *
 * *
* * *
 * *
  *
 
  1. layer = int(input("输入:\n"))

  2. for i in range(layer // 2 + 2):

  3. print(" "*(layer - i), end="")

  4. for j in range(i ):

  5. print("*",end=" ")

  6. print()

  7. for i in range(layer // 2 , 0 , -1):

  8. print(" " * (layer - i),end="")

  9. for j in range(i):

  10. print("*",end=" ")

  11. print()

Demo31 打印菱形II

题目描述

如下所示,是一个高度为9的菱形

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

示例

输入:

5

输出:

  *
 * *
*   *
 * *
  *
 
  1. layer = int(input("输入:\n"))

  2. for i in range(layer // 2 + 2):

  3. print(" "*(layer - i), end="")

  4. for j in range(2 * i - 1):

  5. if j == 0 or j == 2 * i - 2:

  6. print("*",end="")

  7. else:

  8. print(" ",end="")

  9. print()

  10. for i in range(layer // 2 , 0 , -1):

  11. print(" " * (layer - i),end="")

  12. for j in range(2 * i - 1):

  13. if j == 0 or j == 2 * i - 2:

  14. print("*",end="")

  15. else:

  16. print(" ",end="")

  17. print()

Demo32 打印菱形III

题目描述

如下所示,是一个高度为9的菱形

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

示例

输入:

5

输出:

  *
 ***
*****
 ***
  *
 
  1. layer = int(input("输入:\n"))

  2. for i in range(layer // 2 + 2):

  3. print(" "*(layer - i), end="")

  4. for j in range(2 * i - 1):

  5. print("*",end="")

  6. print()

  7. for i in range(layer // 2 , 0 , -1):

  8. print(" " * (layer - i),end="")

  9. for j in range(2 * i - 1):

  10. print("*",end="")

  11. print()

Demo33 猜数字

题目描述

计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同

对于用户输入的数字,程序会提示它是过高还是过低

输入输出描述

每次输入一个整数

每次输出该数字是过高还是过低,如果猜中则输出猜中的数字并结束

示例

输入:50

输出:高了

输入:25

输出:低了

输入:42

输出:高了

输入:39

输出:猜中了!答案就是39

 
  1. for i in range(0,101):

  2. a = int(input("输入:\n"))

  3. # while i != a:

  4. if a > i:

  5. print("高了")

  6. elif a < i:

  7. print("低了")

  8. elif a == i :

  9. print(f"猜对了!答案就是{a}")

  10. break

Demo34 最大公约数I

题目描述

输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8

输入输出描述

输入两个数字

输出最大公约数

示例1

输入:

16 24

输出:

8

示例2

输入:

7 3

输出:

1

 
  1. a , b = map(int,input("输入:\n").split())

  2. if a<b:

  3. t = a

  4. a = b

  5. b = t

  6. c = a % b

  7. while c != 0:

  8. a = b

  9. b = c

  10. c = a%b

  11. print(b)

Demo35 判断素数

题目描述

一个大于1的整数如果只能被正整数1和它本身整除,则它就是素数,例如2、3、5和7都是素数,而4、6、8、9则不是

输入输出描述

输入一个大于1的正整数

输出Yes表示该数字是素数,否则输出No

示例1

输入:

9

输出:

No

示例2

输入:

11

输出:

Yes

 
  1. a = int(input("输入:\n"))

  2. for i in range(2,a):

  3. if a % i == 0:

  4. print("No")

  5. else:

  6. print("Yes")

Demo36 最小公倍数

题目描述

输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15

输入输出描述

输入两个正整数

输出最小公倍数

示例1

输入:

3 9

输出:

9

示例2

输入:

4 6

输出:

12

 
  1. a , b = map(float,input("输入:\n").split())

  2. a1 = a

  3. b1 = b

  4. while b1:

  5. a1,b1 = b1 , a1 % b1

  6. print(a*b//a1)

Demo37 整数的素因子

题目描述

输入一个正整数,然后找出它所有的最小因子,也称之为素因子

输入输出描述

输入一个正整数

输出多行,每行输出一个素因子

示例1

输入:

120

输出:

2 2 2 3 5

解释:

2 * 2 * 2 *3 * 5 = 120

示例2

输入:

100

输出:

2 2 5 5

 
  1. num = int(input("输入:\n"))

  2. num1 = 2

  3. while num >= num1:

  4. if num % num1 == 0:

  5. print(num1,end = ' ')

  6. num = num/num1

  7. else:

  8. num1 += 1

Demo38 完全数

题目描述

如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1

输入输出描述

输入一个正整数

输出该数是否为完全数

示例1

输入:

6

输出:

Yes

示例2

输入:

9

输出:

No

 
  1. a = int(input("输入:\n"))

  2. c = 0

  3. for i in range(1,a):

  4. if a%i == 0:

  5. c+=i

  6. if c==a:

  7. print("Yes")

  8. else:

  9. print("No")

Demo39 前50个素数

题目描述

打印前50个素数,每打印10个素数换行

 
  1. for i in range(2,100):

  2. if 100 % i == 0:

  3. print()

  4. else :

  5. print(i)

Demo40 计算π

题目描述

你可以使用下面的数列近似计算π

当i越大时,计算结果越近似于π

 
  1. sum = 0

  2. for i in range(1,100000):

  3. if i % 2 ==0:

  4. sum = sum - 1/(2*i-1)

  5. elif i % 2 != 0:

  6. sum = sum + 1/(2*i-1)

  7. pi = sum * 4

  8. print(pi)

Demo41 计算e

题目描述

你可以使用下面的数列近似计算e

当i越大时,计算结果越近似于e

 
  1. e = 0

  2. for i in range(1,100):

  3. for j in range(1,i+1):

  4. i *= j

  5. e = e + 1/i

  6. print(e)

Demo42 剪刀石头布II

题目描述

延伸【Demo21剪刀石头布I】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜利者

 
  1. import random

  2. dn = 0

  3. you = 0

  4. while True:

  5. b = random.randint(1,4)

  6. a = int(input("请输入1-3(1代表剪刀,2代表石头,3代表布)之间整数:"))

  7. if (a == 1 and b == 2) or (a == 2 and b == 3) or (a == 3 and b == 1):

  8. print("兄弟再练练吧🤣🤣🤣!")

  9. dn += 1

  10. if dn == 3:

  11. print("你输了")

  12. break

  13. elif a == b:

  14. print("点到为止,平手😊😊😊!")

  15. else:

  16. print("有两把刷子哟👍👍👍!")

  17. you += 1

  18. if you == 3:

  19. print("你赢了")

  20. break

Demo43 组合问题I

题目描述

在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数

注:组合(a,b)与组合(b,a)算同一种组合,只记录一次

 
  1. s = []

  2. for i in range(1,8):

  3. for j in range(i+1,8):

  4. s.append(f"{i},{j}")

  5. print(s)

Demo44 组合问题II

题目描述

有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?

 
  1. s = []

  2. num = 0

  3. for i in range(1,5):

  4. for j in range(i+1,5):

  5. for l in range(j+1,5):

  6. num = str(i) + str(j) + str(l)

  7. s.append(num)

  8. print(s)

Demo45 水仙花数

题目描述

水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身,例如$153=1^3+5^3+3^3$

编写程序,输出所有的水仙花数

 
  1. for i in range(100 , 1000):

  2. a = i // 100

  3. b = i % 100 // 10

  4. c = i % 10

  5. if i == a ** 3 + b ** 3 + c ** 3:

  6. print(i,end=" ")

Demo46 青蛙跳台阶

题目描述

一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?

例如:两个台阶,有两种跳法(1+1,2);四个台阶,有五种跳法(1+1+1+1,2+1+1,1+2+1,1+1+2,2+2)

 
  1. # 青蛙跳楼梯:1 1 2 3 5 8 13······

  2. def qingwa(n : int) -> int:

  3. if n == 1 or n ==2:

  4. return n

  5. return qingwa(n-1) + qingwa(n-2)

  6. print(qingwa(10))

Demo47 堆叠相加

题目描述

现有堆叠相加模式$a+aa+aaa+aaaa+aaaaa+......$

例如:$2+22+222+2222+22222$,其中a为2,且有5组数字

输入输出描述

输入两个数据分别为数字a和组数n

输出按照堆叠相加模式算出的和

示例

输入:

3 4

输出:

3702

解释:

3 + 33 + 333 + 3333 = 3702

 
  1. a = int(input("请输入一个数:"))

  2. n = int(input("请输入循环次数:"))

  3. sum = 0

  4. for i in range(1,n):

  5. sum = sum + a*i

  6. print(sum)

Demo48 十进制转二进制

题目描述

输入一个十进制正整数,输出其二进制形式

输入输出描述

输入一个十进制正整数

输出二进制字符串

示例

输入:

9

输出:

1001

 
  1. num = int(input("输入:\n"))

  2. ejz = ""

  3. while num > 0:

  4. ejz = str(num % 2) + ejz

  5. num = num // 2

  6. print(ejz)

Demo49 二进制转十进制

题目描述

输入一个二进制字符串,输出其对应的十进制数字

输入输出描述

输入一个二进制字符串

输出十进制数字

示例

输入:

1001

输出:

9

 
  1. num = int(input("输入:\n"))

  2. a = 0

  3. b = 0

  4. for i in range(2,len(str(num))+1):

  5. b = (num / (10**(i-1))) % 10

  6. a = a + b*(2**(i-1))

  7. a = a + (num % 10)

  8. print("%.0f"%a)

Demo50 十进制转十六进制

题目描述

输入一个十进制正整数,输出其十六进制形式

输入输出描述

输入一个十进制正整数

输出十六进制字符串

示例

输入:

1233321

输出:

1e1b9

 
  1. num = int(input("输入:\n"))

  2. ejz = ""

  3. while num > 0:

  4. ejz = str(num % 16) + ejz

  5. num = num // 16

  6. # print(ejz)

  7. print(hex(num).upper())

Demo51 十六进制转十进制

题目描述

输入一个十六进制字符串,输出其对应的十进制数字

输入输出描述

输入一个十六进制字符串

输出十进制数字

示例

输入:

1e1b9

输出:

123321

 
  1. a = input()

  2. print(int(a , 16))

Demo52 最长公共前缀

题目描述

给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写

输入输出描述

输入两行,分别表示s1和s2

输出前缀串

示例

输入:

abcdefg

abcdhko

输出:

abcd

 
  1. a = set(input())

  2. b = set(input())

  3. print(a.intersection(b))

Demo53 子串出现的次数

题目描述

给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配

输入输出描述

输入两行字符串,分别为s1和s2,s2的长度小于等于s1

输出s2在s1中出现的次数

示例1

输入:

ABCsdABsadABCasdhjabcsaABCasd

ABC

输出:

3

示例2

输入:

AAAAAAAA

AAA

输出:

2

 
  1. a = set(input())

  2. b = set(input())

  3. print(str(a.intersection(b)))

Demo54 最长公共子串

题目描述

给定两个字符串 s1 和 s2 ,求 s1 与 s2 之间的最长公共子串,字符区分大小写

输入输出描述

输入两行字符串,分别为s1和s2

输出最长公共子串

示例

输入:

123ABCDEFG83hsad

iughABCDEFG23uy

输出:

ABCDEFG

Demo55 检测密码

题目描述

一些网站会给密码强加一些规则:

(1)密码必须至少有8个字符

(2)密码只能包含英文字母和数字

(3)密码应该至少包含两个数字

(4)密码应该至少包含两个大写字母

如果密码符合规则,输出Yes;否则输出No

输入输出描述

输入一串密码

输出该密码是否符合规则

示例1

输入:

123456ab

输出:

No

示例2

输入:

123abcABC

输出:

Yes

Demo56 回文素数

题目描述

回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数

输出显示前100个回文素数,每行显示10个

Demo57 反素数

题目描述

反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数

输出显示前100个反素数,每行显示10个

Demo58 双素数

题目描述

双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数

输出显示小于1000的双素数

Demo59 梅森素数

如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数

输出p≤31的所有梅森素数

Demo60 平方根的近似求法

有几种实现开平方$\sqrt{n}$的技术,其中一个称为巴比伦法

它通过使用下面公式的反复计算近似地得到:

当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值

lastGuess初始值为1,如果nextGuess和lastGuess的差值小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近似值;否则,nextGuess成为下一次计算的lastGuess,近似过程继续执行

编写代码,求解n的平方根的近似值

第三部分:

Demo61 指定等级

题目描述

读入学生成绩,获取最高分best,然后根据下面的规则赋等级值:

(1)如果分数≥best-10,等级为A

(1)如果分数≥best-20,等级为B

(1)如果分数≥best-30,等级为C

(1)如果分数≥best-40,等级为D

(1)其他情况,等级为F

输入输出描述

输入两行,第一行输入学生人数n,第二行输入n个学生的成绩

输入n行,表示每个学生的成绩等级

示例

输入:

4

40 55 70 58

输出:

学生0分数为40,等级为C

学生1分数为55,等级为B

学生2分数为70,等级为A

学生3分数为58,等级为B

 
  1. num = int(input())

  2. s = []

  3. for i in range(0,num):

  4. grade = int(input())

  5. s.append(grade)

  6. max = int(s[0])

  7. for i in range(0,num):

  8. if(int(s[i]) > max):

  9. max = int(s[i])

  10. print("最大数",max)

  11. for i in range(0,num):

  12. if(int(s[i]) >= (max-10)):

  13. print(f'学生{i}分数为{int(s[i])},等级为A')

  14. elif(int(s[i]) >= (max-20)):

  15. print(f'学生{i}分数为{int(s[i])},等级为B')

  16. elif(int(s[i]) >= (max-30)):

  17. print(f'学生{i}分数为{int(s[i])},等级为C')

  18. elif(int(s[i]) >= (max-40)):

  19. print(f'学生{i}分数为{int(s[i])},等级为D')

Demo62 计算数字的出现次数

题目描述

读取1到100之间的整数,然后计算每个数出现的次数

输入输出描述

输入两行,第一行为整数的个数n,第二行为n个整数

输出多行,每行表示某数及其出现的次数,顺序按照数字从小到大

示例

输入:

9

2 5 6 5 4 3 23 43 2

输出:

2出现2次

3出现1次

4出现1次

5出现2次

6出现1次

23出现1次

43出现1次

 
  1. num = int(input())

  2. s = []

  3. for i in range(0,num):

  4. a = int(input())

  5. s.append(a)

  6. for i in range(0,num):

  7. print(f'{s[i]}出现了{s.count(s[i])}次')

Demo63 打印不同的数

题目描述

读入n个数字,并显示互不相同的数(即一个数出现多次,但仅显示一次),数组包含的都是不同的数

输入输出描述

输入两行,第一行为数字的个数n,第二行为n个数字

输出数组,包含的都是不同的数

示例

输入:

10

1 2 3 2 1 6 3 4 5 2

输出:

1 2 3 6 4 5

 
  1. num = int(input())

  2. s = []

  3. for i in range(0,num):

  4. a = int(input())

  5. s.append(a)

  6. # for i in range(1,num):

  7. # if(s[i] == s[i-1]):

  8. # s.pop(s[i])

  9. # print(s)

  10. b = set(s)

  11. print(list(b))

Demo64 最大公约数II

题目描述

输入n个数字,求该n个数字的最大公约数

输入输出描述

输入两行,第一行为数字个数n,第二行为n个整数

输出最大公约数

示例

输入:

9 12 18 21 15

输出:

3

 
  1. num = int(input())

  2. s = []

  3. for i in range(0,num):

  4. a = int(input())

  5. s.append(a)

  6. for i in range(1,num):

  7. if (a[i] < a[i-1]):

  8. t = a[i]

  9. a[i] = a[i-1]

  10. a[i-1] = t

  11. c = a[i] % a[i-1]

  12. while c != 0:

  13. a[i] = a[i-1]

  14. a[i-1] = c

  15. c = a[i] % a[i-1]

  16. print(a[i-1])

Demo65 打乱数组

题目描述

编程程序,对给定的数组进行随机打乱,并输出打乱后的结果

Demo66 是否有序

题目描述

编写程序,对给定的数组进行判断,判断其数组元素是否非单调递减

输入输出描述

第一行输入测试数据组数T,接下来有2T行,每第一行表示数组长度n,每第二行有n个元素

输出T行,表示该数组是否有序

示例

输入:

3

5

1 2 3 4 5

4

3 1 2 4

5

1 2 2 3 4

输出:

YES

NO

YES

Demo67 相似词

题目描述

输入两个英文单词,判断其是否为相似词,所谓相似词是指两个单词包含相同的字母

输入输出描述

输入两行,分别表示两个单词

输出结果,为相似词输出YES,否则输出NO

示例

输入:

listen

silent

输出:

YES

Demo68 豆机器

题目描述

豆机器,也称为梅花或高尔顿盒子,它是一个统计实验的设备,它是由一个三角形直立板和均匀分布的钉子构成,如下图所示:

小球从板子的开口处落下,每次小球碰到钉子,它就是50%的可能掉到左边或者右边,最终小球就堆积在板子底部的槽内

编程程序模拟豆机器,提示用户输入小球的个数以及机器的槽数,打印每个球的路径模拟它的下落,然后打印每个槽子中小球的个数

输入输出描述

输入两个数据,分别表示小球个数和槽子的个数

输出每个小球经过的路径,和最终每个槽子里小球的个数(因为牵扯随机数,程序结果不唯一,示例仅用于表明题意)

示例

输入:

5 8

输出:

LRLRLRR

RRLLLRR

LLRLLRR

RRLLLLL

LRLRRLR

0 0 1 1 3 0 0 0

Demo69 更衣室难题

题目描述

一个学校有100个更衣室和100个学生。所有的更衣室在开学第一天都是锁着的。随着学生进入,第一个学生表示为S1,打开每个更衣室;然后第二个学生S2,从第二个更衣室开始,用L2表示,关闭所有其他更衣室;学生S3从第三个更衣室L3开始,改变每三个更衣室(如果打开则关闭,如果关闭则打开);学生S4从更衣室L4开始,改变每四个更衣室;学生S5开始从更衣室L5开始,改变每五个更衣室。依次类推,直到学生S100改变L100。

在所有学生都经过了操作后,哪些更衣室是打开的?编程找出答案。

Demo70 合并两个有序数组

题目描述

给定两个有序递增的数组A和数组B,将其进行合并成一个新的数组C,且保持有序递增,并输出数组C

输入输出描述

第一行输入数组A的长度n,第二行输入n个元素,第三行输入数组B的长度m,第四行输入m个元素

输出数组C的n+m个元素

示例

输入:

5

1 5 16 61 111

4

2 4 5 6

输出:

1 2 4 5 5 6 16 61 111

Demo71 数组划分

题目描述

给定一个数组A,将第一个元素$A_0$作为枢纽,并把数组划分成三个区间,第一个区间所有元素$<A_0$,第二个区间所有元素$==A_0$,第三个区间所有元素$>A_0$

例如数组[5,2,9,3,6,8],划分后的结果为[3,2,5,9,6,8],第一个区间[3,2],第二个区间[5],第三个区间[9,6,8]

结果不唯一,只要保证划分后三个区间的元素特性即可,[2,3,5,9,8,6]、[3,2,5,6,8,9]都可作为上述划分的结果

输入输出描述

第一行输入数组的长度n,第二行输入n个元素

输出划分后的结果

示例

输入:

10

5 1 9 2 5 7 4 5 3 6

输出:

1 2 4 3 5 5 5 9 7 6

Demo

题目描述

输入输出描述

示例

输入:

输出:

3.布置的7道题

1.不死兔子

2、输入字符串,判断该字符串是否是回文字符串。

3、给定一个正整数N,找出1到N(含)之间所有质数的总和。

4、求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

5、合并两个有序数组,合并后还是有序列表。

6、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前。

7、给定一个非负整数数组A,该数组的元素都是从1~N的元素组成,现在发现其中确实一个,请找出这个确实的元素。

8、小明有一堆苹果,他每天吃掉这堆的一半加一个,等第六天,小明剩余1个苹果,问,这堆苹果共多少个?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值