第1部分 语法基础
此部分重点练习:常量与变量、数据类型、运算符、选择语句、常用内置函数
/
内置模块
/
工具类
/
三方库
Demo01 摄氏温度转化为华氏温度
题目描述
输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出
转换的公式为如下:
输入输出描述
输入一个值表示摄氏温度
celsius
输出华氏温度
fahrenheit
,结果保留一位小数点
示例
输入:43输出:109.4
实例代码
"""
数据:cel fah
步骤:
1.输入cel
2.根据给定公式计算fah
3.输出fah
"""
cel = eval(input())
fah = 9 / 5 * cel + 32
print("%.1f" % fah)
Demo02 计算圆柱体的体积
题目描述
输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。
输入输出描述
分别输入圆柱的半径
radius
和高度
length
,两个数据之间用空格分隔
输出两行,第一行为圆柱底面积
area
,第二行为圆柱体积
volume
,结果保留两位小数点
示例
输入:5.5 12输出:95.031140.41
实例代码
"""
数据:radius length area volume
步骤:
1.输入radius和length
2.计算area底面积
3.计算volume体积
4.输出
"""
radius, length = eval(input())
area = radius * radius * 3.14159267
volume = area * length
print("%.2f" % area)
print("%.2f" % volume)
Demo03 将英尺数转换为米数
题目描述
输入英尺数然后将它转换为米数,并输出结果,一英尺等于
0.305
米
输入输出描述
输入一个数据表示英尺数
输出转换后的米数,结果保留四位小数点
示例
输入:16.5输出:5.0325
实例代码
foot = eval(input('请输入需要转换的英尺:'))
kilo = foot * 0.305
print('对应的高度为:%.4f米' % kilo)
# print('对应的高度为:{}米'.format(kilo)) # format显示
# print(f'对应的高度为:{kilo}米' # format缩写显示
Demo04 计算小费
题目描述
读取小计和酬金率,然后计算小费以及合计金额。例如客户的小计为
10
元,酬金率为
15%
,那么小
费是1.5元,合计金额为11.5
元
输入输出描述
分别输入小计和酬金率,两个数据用之间用空格分隔
输出两行,第一行为小费,第二行为合计金额,结果保留两位小数
示例
输入:15.69 15输出:2.3518.04
实例代码
"""
数据:num ge shi bai total
步骤:
1.输入一个数字[0,1000)
2.按照顺序 从右往左拆
123 % 10 = 3
123 // 10 = 12
12 % 10 = 2
12 // 10 = 1
1 % 10 = 1
1 // 10 = 0
3.三者相加 输出
"""
num = eval(input())
ge = num % 10
num //= 10 # num = num // 10
shi = num % 10
num //= 10
bai = num % 10
nsum = ge + shi + bai
print(nsum)
Demo05 对一个整数中的各位数字求和
题目描述
读取一个
0
到
1000
之间的整数,并计算它各位数字之和
输入输出描述
输入一个
[0,1000]
之间的整数
输出该数字的各位数字之和
示例1
输入:999输出:27解释:999 各位数之和为 9 + 9 + 9 = 27
示例2
输入:12输出:3
实例代码
"""
数据:num ge shi bai total
步骤:
1.输入一个数字[0,1000)
2.按照顺序 从右往左拆
123 % 10 = 3
123 // 10 = 12
12 % 10 = 2
12 // 10 = 1
1 % 10 = 1
1 // 10 = 0
3.三者相加 输出
"""
num = eval(input())
ge = num % 10
num //= 10 # num = num // 10
shi = num % 10
num //= 10
bai = num % 10
nsum = ge + shi + bai
print(nsum)
Demo06 计算年数和天数
题目描述
输入分钟数,然后将该分钟数转换为年数和天数,假定一年有
365
天
输入输出描述
输入一个分钟数
输出两行,第一行为年数,第二行为天数
示例
输入:1000000000输出:1902214
实例代码
"""
数据:minutes hours days years
步骤:
1.输入minutes
2.计算总小时数 minutes // 60
3.计算总天数 hours // 24
4.计算总年数 days // 365
5.输出
"""
minutes = eval(input())
hours = minutes // 60
days = hours // 24
years = days // 365
days = days % 365
print(years)
print(days)
Demo07 计算能量
题目描述
水从初始温度加热到最终温度是需要能量的,请计算需要多少能量,公式如下:
这里的
M
是按千克计的水量,初始温度和最终温度均为摄氏度,热量
Q
以焦耳计
输入输出描述
输入三行数据,第一行输入水量,第二行输入初始温度,第三行输入最终温度
输出所需的能量值,结果保留一位小数
示例
输入:55.53.510.5输出:1625484.0
实例代码
"""
数据:水量M、初始温度initialT、最终温度finalT、能量Q
步骤:
输入三行数据,第一行输入水量,第二行输入初始温度,第三行输入最终温度;
输出所需的能量值,结果保留一位小数
"""
M = eval(input('请输入水量'))
initialT = eval(input('请输入初始温度'))
finalT = eval(input('请输入最终温度'))
Q = M * (finalT - initialT) * 4184
print('所需能量值%.1f' % Q)
Demo08 分割数字
题目描述
输入一个四位整数,并以反向顺序显示
输入输出描述
输入一个四位整数
输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位
示例
输入:5213输出:3125
实例代码
"""
数据:四位整数num、个位ge、十位shi、百位bai、千位qian
步骤:
1、输入一个四位整数
2、输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位
"""
num = eval(input())
ge = num % 10
num //= 10
shi = num % 10
num //= 10
bai = num % 10
num //= 10
qian = num % 10
print(ge)
print(shi)
print(bai)
print(qian)
Demo09 计算三角形的面积
题目描述
输入三角形的三个顶点坐标,并计算其面积,计算公式如下
输入输出描述
输入六个数据,分别表示三角形三个顶点的坐标
x1
、
y1
、
x2
、
y2
、
x3
和
y3
,数据之间用空格分隔
输出三角形的面积,结果保留一位小数
示例
输入:1.5 -3.4 4.6 5 9.5 -3.4输出:33.6
实例代码
"""
数据:三个顶点坐标x-1-2-3 y1-2-3 三边side1-2-3 半周长s area
步骤:
1.输入数据
2.分别计算三边长度
3.通过三边算面积
4.输出
"""
x1, y1, x2, y2, x3, y3 = eval(input())
side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
side2 = ((x3 - x2) ** 2 + (y3 - y2) ** 2) ** 0.5
side3 = ((x1 - x3) ** 2 + (y1 - y3) ** 2) ** 0.5
s = (side1 + side2 + side3) / 2
area = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5
print("%.1f" % area)
Demo10 显示当前时间
题目描述
输入你所在的时区,并输出当前的时间
输入输出描述
输入时区,如东八区为
8
,西五区为
-5
输出二十四小时制的时间,格式为 时
:
分
:
秒
示例
输入:8输出:21:43:12
实例代码
import time
print(time.time())
# 1711245794.7560694
# 表示从1970年1月1日 00:00:00 至今 经历的总秒数
# 格林威治时间制
# 北京时间 东八区
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.2690.0074.74
实例代码
import math
# 输入三角形的三个顶点坐标
x1, y1, x2, y2, x3, y3 = map(float, input("请输入三角形三个顶点的坐标:").split())
# 计算三边的长度
a = math.sqrt((x2 - x3) ** 2 + (y2 - y3) ** 2)
b = math.sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2)
c = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
# 计算角度
angle_A = math.degrees(math.acos((b ** 2 + c ** 2 - a ** 2) / (2 * b * c)))
angle_B = math.degrees(math.acos((a ** 2 + c ** 2 - b ** 2) / (2 * a * c)))
angle_C = math.degrees(math.acos((a ** 2 + b ** 2 - c ** 2) / (2 * a * b)))
# 输出结果
print("A角度:{:.2f}".format(angle_A))
print("B角度:{:.2f}".format(angle_B))
print("C角度:{:.2f}".format(angle_C))
Demo12 最小数量的硬币
题目描述
假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币
输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少
输入输出描述
输入总金额
输出每种硬币的个数
示例
输入:11.56输出:11 个一元硬币2 个两角五分硬币0 个一角硬币1 个五分硬币1 个一分硬币
实例代码
money = eval(input("请输入总金额:"))
yiYuan = money // 1
liangJiaoWuFen = (money - yiYuan) // 0.25
yiJiao = ((money - yiYuan) % 0.25) // 0.1
wuFen = ((money - yiYuan) % 0.25 % 0.1) // 0.05
yiFen = ((money - yiYuan) % 0.25 % 0.1 % 0.05) // 0.01
print("%d个一元硬币" % yiYuan)
print("%d个两角五分硬币" % liangJiaoWuFen)
print("%d个一角硬币" % yiJiao)
print("%d个五分硬币" % wuFen)
print("%d个一分硬币" % yiFen)
Demo13 正多边形的面积
题目描述
正多边形是边长相等的多边形,而且所有的角相等,计算正多边形的公式为:
输入输出描述
输入两个数据分别表示边的个数
n
和边的长度
s
,数据之间用空格分隔
输出边长为
s
的正
n
多边形的面积,结果保留两位小数
示例
输入:5 6.5输出:72.69
实例代码
"""
1、导入math库,以便使用数学函数
2、根据输入的边的个数n和边的长度s,计算正n多边形的面积
3、使用公式:面积 = (n * s^2) / (4 * tan(pi/n)),其中pi是圆周率
4、将计算得到的面积结果保留两位小数
5、输出结果
"""
n, s = map(eval, input("请你输入边数和每边长度:").split())
import math
area = (n * s ** 2) / (4 * math.tan(math.pi / n))
print("面积:%.2f" % area)
Demo14 计算身体质量指数
题目描述
BMI
是根据体重测量健康的方式,通过以千克为单位的体重除以以米为单位的身高的平方计算而出
BMI
指数解读如下:
输入输出描述
输入体重和身高,数据之间用空格分隔
输出
BMI
指数结果
示例
输入:60 1.8输出:标准
实例代码
"""
数据:体重weight 身高height BMI
步骤:
1.输入体重和身高
2.计算BMI的值
3.参照表格
4.输出对应的结果
"""
weight, height = eval(input())
BMI = weight / height ** 2
# 一般写条件 先考虑边界/特殊/最多情况
if BMI < 18.5:
print("超轻")
elif BMI < 25.0:
print("标准")
elif BMI < 30.0:
print("超重")
else:
print("肥胖")
Demo15 判定闰年
题目描述
一个年份如果能被
4
整除但不能被
100
整除,或者能被
400
整除,那么这个年份就是闰年
输入输出描述
输入一个年份
输出
Yes
表示该年份为闰年,
No
则表示不是闰年
示例1
输入:2008输出:Yes
示例2
输入:2002输出:No
实例代码
#一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年
year = eval(input("请输入一个年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("Yes")
else:
print("No")
Demo16 中彩票
题目描述
随机产生一个两位数数字,然后用户输入一个两位数数字,并根据以下规则判定用户赢得的奖金是多少
(
1
)输入的数字和随机产生的数字完全相同(包括顺序),奖金为
10000
元
(
2
)输入的数字和随机产生的数字相同(不包括顺序),奖金为
3000
元
(
3
)输入的数字和随机产生的数字有一位数相同,奖金为
1000
美元
(
4
)输入的数字和随机产生的数字都不相同,没有奖金,
0
元
输入输出描述
输入一个两位数
输出两行,第一行输出那个随机产生的两位数,第二行输出用户的奖金
示例1
输入:12输出:1210000
示例2
输入:12输出:213000
示例3
输入:12输出:231000
示例4
输入:12输出:450
实例代码
"""
数据:随机产生的数字randNum 用户输入的数字 userNum r1 r2 u1 u2
randNum = r1 * 10 + r2
userNum = u1 * 10 + u2
步骤:
1.输入
2.拆数字
3.判断
(1) randNum == userNum
(2) r1 == u2 and r2 == u1
(3) r1 == u1 or r1 == u2 or r2 == u1 or r2 == u2
(4) 啥也没有
4.输出对应的结果
"""
import random
randNum = random.randint(10, 99)
userNum = eval(input())
r1 = randNum // 10
r2 = randNum % 10
u1 = userNum // 10
u2 = userNum % 10
if randNum == userNum:
print(10000)
elif r1 == u2 and r2 == u1:
print(5000)
elif r1 == u1 or r1 == u2 or r2 == u1 or r2 == u2:
print(3000)
else:
print(0)
Demo17 解一元二次方程
题目描述
输入输出描述
输入
a
、
b
、
c
三个数据,数据之间用空格分隔
两个解每行输出一个;一个解单行输出;无解则单行输出无实数解,保留两位小数
示例1
输入:1.0 3 1输出:-0.38-2.62
示例2
输入:1 2.0 1输出:-1.00
示例3
输入:1 2 3输出:无实数解
实例代码
"""
数据:a b c delt x1 x2
步骤:
1.输入 a b c
2.计算 delt = b^2 - 4ac
3.delt判断
(1)> 0
(2)== 0
(3)< 0
4.根据不同结果输出
"""
a, b, c = eval(input())
delt = b ** 2 - 4 * a * c
if delt > 0:
x1 = (-b + delt ** 0.5) / (2 * a)
x2 = (-b - delt ** 0.5) / (2 * a)
print(x1)
print(x2)
elif delt == 0:
x = -b / (2 * a)
print(x)
else:
print("无实数解")
Demo18 解2×2线程方程
题目描述
如有一个
2×2
的线程方程组:
你可以使用克莱姆法则解该线性方程:
其中
为判别式,如果为零则输出无解
输入输出描述
输入
a
、
b
、
c
、
d
、
e
、
f
六个数据,数据之间用空格分隔
输出两行,第一行
x
的解,第二行
y
的解,保留一位小数
示例1
输入:9.0 4.0 3.0 -5.0 -6.0 -21.0输出:-2.03.0
示例2
输入:1.0 2.0 2.0 4.0 4.0 5.0输出:无解
实例代码
a, b, c, d, e, f = map(eval,input().split()) #输入a,b,c,d,e,f
if a * d - b * c == 0: #判别式ad-bc等于0无解
print("无解")
else: #克莱姆法则解方程x,y
x = (e * d - b * f) / (a * d - b * c)
y = (a * f - c * e) / (a * d - b * c)
print('%.1f' % x) #输出x
print('%.1f' % y) #输出y
Demo19 未来是周几
题目描述
输入表示今天是一周内哪一天的数字(星期天是
0
,星期一是
1
,
...
,星期六是
6
)
并输入今天之后到未来某天的天数,然后输出该天是星期几
输入输出描述
输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔
输出未来某天是星期几
示例1
输入:1 3输出:星期四
示例2
输入:0 31输出:星期三
实例代码
num, days = map(eval,input().split())
i = (num + days) % 7
if i == 1:
print("星期一")
elif i == 2:
print("星期二")
elif i == 3:
print("星期三")
elif i == 4:
print("星期四")
elif i == 5:
print("星期五")
elif i == 6:
print("星期六")
else:
print("星期天")
Demo20 本年中的第几天
题目描述
给定某年、某月、某日的一个日期,计算该日是今年中的第几天
输入输出描述
输入三个数据分别表示年、月、日,数据之间用空格分隔
输出该日是今年中的第几天
示例1
输入:2023 1 28输出:28
示例2
输入:2023 3 2输出:61
实例代码
year, month, day = map(eval,input().split())
if year % 4 == 0:
if month == 1:
print(day)
elif month == 2:
print(31 + day)
elif month == 3:
print(31 + 28 + day)
elif month == 4:
print(31 + 28 + 31 + day)
elif month == 5:
print(31 + 28 + 31 + 30 + day)
elif month == 6:
print(31 + 28 + 31 + 30 + 31 + day)
elif month == 7:
print(31 + 28 + 31 + 30 + 31 + 30 + day)
elif month == 8:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + day)
elif month == 9:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + day)
elif month == 10:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + day)
elif month == 11:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + day)
elif month == 12:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + day)
else:
if month == 1:
print(day)
elif month == 2:
print(31 + day)
elif month == 3:
print(31 + 29 + day)
elif month == 4:
print(31 + 28 + 31 + day)
elif month == 5:
print(31 + 28 + 31 + 30 + day)
elif month == 6:
print(31 + 28 + 31 + 30 + 31 + day)
elif month == 7:
print(31 + 28 + 31 + 30 + 31 + 30 + day)
elif month == 8:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + day)
elif month == 9:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + day)
elif month == 10:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + day)
elif month == 11:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + day)
elif month == 12:
print(31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + 30 + 31 + day)
Demo21 剪刀石头布 I
题目描述
计算机随机产生一个数字
0
、
1
和
2
分别表示剪刀、石头和布
用户输入数字
0
、
1
或
2
,输出用户赢、计算机赢或平局
输入输出描述
输入数字
0
、
1
或
2
输出有三行,第一行输出计算机出的啥,第二行输出用户出的啥,第三行输出结果
示例1
输入:0输出:计算机出的 石头用户出的 剪刀计算机赢
示例2
输入:1输出:计算机出的 剪刀用户出的 石头用户赢
示例
3
输入:2输出:计算机出的 布用户出的 布平局
实例代码
user_number = eval(input()) #用户输入数字
import random
random_number = random.randint(1, 3) #计算机生成随机整数0,1,2
if random_number == 0:
print("计算机出的 剪刀")
elif random_number == 1:
print("计算机出的 石头")
elif random_number == 2:
print("计算机出的 布")
if user_number == 0:
print("用户出的 剪刀")
elif random_number == 1:
print("用户出的 石头")
elif random_number == 2:
print("用户出的 布")
if user_number == random_number:
print("平局")
elif user_number == 0 and random_number == 2:
print("用户赢")
elif user_number == 1 and random_number == 0:
print("用户赢")
elif user_number == 2 and random_number == 1:
print("用户赢")
elif user_number == 2 and random_number == 0:
print("计算机赢")
elif user_number == 0 and random_number == 1:
print("计算机赢")
elif user_number == 1 and random_number == 2:
print("计算机赢")
Demo22 三角形的周长
题目描述
输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法
如果任意两边之和大于第三边则输入都是合法的
输入输出描述
输入三个数据表示三边,数据之间用空格分隔
输出三角形的周长,如果非法则输出非法
示例1
输入:1 1 1输出:3
示例2
输入:1 3 1输出:非法
实例代码
a, b, c = map(eval,input().split()) #输入三角形三条边长长度
if a + b > c and a + c > b and b + c > a: #三角形两边之和大于第三边
print(a + b + c)
else:
print("非法")
Demo23 一周的星期几
题目描述
泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下:
(
1
) 是指一周的星期几(
0
表示星期六、
1
表示星期天、
...
、
6
表示星期五)
(
2
) 是一个月的哪一天
(
3
) 是月份(
3
表示三月、
4
表示四月、
...
、
12
表示十二月),其中一月和二月都是按照前一年的
13月和14
月来计数的,所以还得把年份改为前一年
(4) 是世纪数,即
(5) 是一个世纪的某一年,即
(6)
输入输出描述
输入年、月、日三个数据,数据之间用空格分隔
输出该日是周几
示例1
输入:2013 1 25输出:星期五
示例2
输入:2012 5 12输出:星期六
Demo24 直线的交点
题目描述
3
输入输出描述
输入八个数据,分别为
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
实例代码
#三位整数
#一个数从左向右和从右向左读取时是一样的,那么这个数就是回文数
num = eval(input())
ge = num % 10
num //= 10
shi = num % 10
bai = num // 10
if ge == bai:
print("YES")
else:
print("NO")
Demo26 两个矩形
题目描述
判断两个矩形之间的关系:包含,重叠,相离
输入输出描述
输入两行,每行四个数据,分别是矩形的中心坐标
x
、
y
和矩形的宽、高
输出两者的关系
示例1
输入:2.5 4 2.5 431.5 5 0.5 3输出:包含
示例2
输入:1 2 3 5.53 4 4.5 5输出:重叠
示例3
输入:1 2 3 340 45 3 2输出:相离
第2部分 循环语句
此部分重点练习:
for
循环语句、
while
循环语句、函数、字符串
Demo27 打印数字 I
题目描述
利用循环,寻找规律,打印如下数字模式:
模式 A11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 6模式 B1 2 3 4 5 61 2 3 4 51 2 3 41 2 31 21模式 C12 13 2 14 3 2 15 4 3 2 16 5 4 3 2 1模式 D1 2 3 4 5 61 2 3 4 51 2 3 41 2 31 21
实例代码
print("模式A")
for n in range(1, 7):
for i in range(1, n + 1):
print(i, end = " ")
print()
print("模式B")
for n in range(1, 7):
for i in range(1, 8 - n):
print(i, end = " ")
print()
for n in range(6, 0, -1):
for i in range(1, n + 1):
print(i, end = " ")
print()
print("模式C")
for n in range(1, 7):
for k in range(6 - n):
print(" ", end = " ")
for i in range(n, 0, -1):
print(i, end = " ")
print()
print("模式D")
for n in range(6, 0, -1):
for k in range(6 - n):
print(" ", end = " ")
for i in range(1, n + 1):
print(i, end = " ")
print()
Demo28 打印数字 II
题目描述
利用循环,寻找规律,打印如下数字模式:
12 1 23 2 1 2 34 3 2 1 2 3 45 4 3 2 1 2 3 4 56 5 4 3 2 1 2 3 4 5 67 6 5 4 3 2 1 2 3 4 5 6 7
实例代码
for n in range(1, 8):
for k in range(7 - n):
print(" ", end = " ")
for x in range(1 - n, n):
print(abs(x) + 1, end = " ")
print()
Demo29 打印数字 III
题目描述
利用循环,寻找规律,打印如下数字模式:
实例代码
for n in range(1, 8):
for k in range(7 - n):
print(" ", end = " ")
for x in range(1 - n, n):
num = 2 ** (n - 1 - abs(x))
print("%2d" % (num), end = " ")
print()
Demo30 打印菱形 I
题目描述
如下所示,是一个高度为
9
的菱形
用户输入菱形高度
n
,并打印出该高度下的菱形
输入输出描述
输入高度
n
,
n
为奇数
输出该高度的菱形
示例
输入:5输出:** ** * ** **
实例代码
# n = 9
"""
n = eval(input())
m = n // 2
for i in range(-m, m + 1):
for k in range(abs(i)):
print(" ", end = "")
for j in range(m + 1 - abs(i)):
print("*", end = " ")
print()
"""
"""
i j k
* 1 1 4
* * 2 1 2 3
* * * 3 1 2 3 2
* * * * 4 1 2 3 4 1
* * * * * 5 1 2 3 4 5 0
* * * * 6 1 2 3 4 1
* * * 7 1 2 3 2
* * 8 1 2 3
* 9 1 4
j <= i and i + j <= 10
"""
n = eval(input())
for i in range(1, n + 1):
for k in range(abs(n // 2 + 1 - i )):
print(" ", end = "")
for j in range(1, i + 1):
if j <= i and i + j <= n + 1:
print("*", end = " ")
print()
Demo31 打印菱形 II
题目描述
如下所示,是一个高度为
9
的菱形
用户输入菱形高度
n
,并打印出该高度下的菱形
输入输出描述
输入高度
n
,
n
为奇数
输出该高度的菱形
示例
输入:5输出:** ** ** **
实例代码
"""
i j k
* 1 1 4
* * 2 1 2 3
* * * 3 1 2 3 2
* * * * 4 1 2 3 4 1
* * * * * 5 1 2 3 4 5 0
* * * * 6 1 2 3 4 1
* * * 7 1 2 3 2
* * 8 1 2 3
* 9 1 4
j <= i and i + j <= 10
j == 1 or j == i or i + j == 10
"""
n = eval(input())
for i in range(1, n + 1):
for k in range(abs(n // 2 + 1 - i )):
print(" ", end = "")
for j in range(1, i + 1):
if j <= i and i + j <= n + 1:
if j == 1 or j == i or j + i == n + 1:
print("*", end = " ")
else:
print(" ", end = " ")
print()
Demo32 打印菱形 III
题目描述
如下所示,是一个高度为
9
的菱形
用户输入菱形高度
n
,并打印出该高度下的菱形
输入输出描述
输入高度
n
,
n
为奇数
输出该高度的菱形
示例
输入:5输出:*************
Demo33 猜数字
题目描述
计算机随机生成一个
[0,100]
之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同
对于用户输入的数字,程序会提示它是过高还是过低
输入输出描述
每次输入一个整数
每次输出该数字是过高还是过低,如果猜中则输出猜中的数字并结束
示例
输入: 50输出:高了输入: 25输出:低了输入: 42输出:高了输入: 39输出:猜中了!答案就是 39
Demo34 最大公约数 I
题目描述
输入两个正整数,计算其最大公约数,例如
4
和
2
的最大公约数是
2
,
16
和
24
的最大公约数是
8
输入输出描述
输入两个数字
输出最大公约数
示例1
输入:16 24输出:8
示例2
输入:7 3输出:1
实例代码
num1, num2 = eval(input())
min_num = min(num1, num2)
for num in range(min_num, 0, -1):
if num1 % num == 0 and num2 % num == 0:
print(num)
break
Demo35 判断素数
题目描述
一个大于
1
的整数如果只能被正整数
1
和它本身整除,则它就是素数,例如
2
、
3
、
5
和
7
都是素数,而
4
、6、
8
、
9
则不是
输入输出描述
输入一个大于
1
的正整数
输出
Yes
表示该数字是素数,否则输出
No
示例1
输入:9输出:No
示例2
输入:11输出:Yes
实例代码
num = eval(input())
# 哨兵:监控状态变化
flag = True # 默认是素数
for n in range(2, num // 2 + 1):
if num % n == 0:
flag = False
break
if flag:
print("YES")
else:
print("No")
Demo36 最小公倍数
题目描述
输入两个正整数,计算其最小公倍数,例如
4
和
2
的最小公倍数是
4
,
3
和
5
的最小公倍数是
15
输入输出描述
输入两个正整数
输出最小公倍数
示例1
输入:3 9输出:9
示例2
输入:4 6输出:12
实例代码
#数据:最大公约数Num, 最小公约数num
num1, num2 = map(eval, input().split()) #输入num1, num2
min_num = min(num1, num2)
for num in range(min_num, 0, -1):
if num1 % num == 0 and num2 % num == 0:
break
Num = (num1 * num2) // num #最小公倍数 = 两数的乘积 / 最大公约数
print(Num)
Demo37 整数的素因子
题目描述
输入一个正整数,然后找出它所有的最小因子,也称之为素因子
输入输出描述
输入一个正整数
输出多行,每行输出一个素因子
示例
1
输入:120输出:2 2 2 3 5解释:2 * 2 * 2 *3 * 5 = 120
示例
2
输入:100输出:2 2 5 5
实例代码
num = eval(input())
while num != 1: # 120 60 30 15 5
for n in range(2, num + 1):
if num % n == 0:
print(n, end = " ")
num = num // n
break
# 2 2 2 3
# O(N * logN)
Demo38 完全数
题目描述
如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
例如
6 = 3 + 2 + 1
,
28 = 14 + 7 + 4 + 2 + 1
输入输出描述
输入一个正整数
输出该数是否为完全数
示例1
输入:6输出:Yes
示例2
输入:9输出:No
Demo39 前50个素数
题目描述
打印前
50
个素数,每打印
10
个素数换行
实例代码
num = 2
count = 0
while count != 50:
flag = True
for n in range(2, num // 2 + 1):
if num % n == 0:
flag = False
break
#是素数怎么处理
if flag:
print(num, end = "\t")
count += 1
if count % 10 == 0:
print()
num += 1
Demo40 计算π
题目描述
你可以使用下面的数列近似计算
π
当
i
越大时,计算结果越近似于
π
Demo41 计算e
题目描述
你可以使用下面的数列近似计算
e
当
i
越大时,计算结果越近似于
e
Demo42 剪刀石头布 II
题目描述
延伸【
Demo21
剪刀石头布
I
】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜利者
Demo43 组合问题 I
题目描述
在数字范围
[1,7]
之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数
注:组合(
a
,
b
)与组合(
b
,
a
)算同一种组合,只记录一次
Demo44 组合问题 II
题目描述
有
1
、
2
、
3
、
4
这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?
Demo45 水仙花数
题目描述
水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身,例如
编写程序,输出所有的水仙花数
Demo46 青蛙跳台阶
题目描述
一只青蛙,一次可以跳一个台阶或者两个台阶,现有
n
个台阶,问该青蛙有多少种不同的跳法?
例如:两个台阶,有两种跳法(
1+1
,
2
);四个台阶,有五种跳法(
1+1+1+1
,
2+1+1
,
1+2+1
,
1+1+2
,
2+2
)
实例代码
n = eval(input())
if n == 1 or n == 2:
print(n)
else: #n = 5
a = 1
b = 2
c = 0
for i in range(3, n + 1):
c = a + b
a = b
b = c
print(c)
Demo47 堆叠相加
题目描述
输入输出描述
输入两个数据分别为数字
a
和组数
n
输出按照堆叠相加模式算出的和
示例
输入:3 4输出:3702解释:3 + 33 + 333 + 3333 = 3702
实例代码
"""
2
20 2
200 20 2
2000 200 20 2
20000 2000 200 20 2
规律:num = num * 10 + a
数据: 数字a 组数n
"""
a, n = map(eval, input().split())
sum = 0
num = 0
for i in range(n):
num = num * 10 + a # 2 22
sum += num
print(sum)
Demo48 十进制转二进制
题目描述
输入一个十进制正整数,输出其二进制形式
输入输出描述
输入一个十进制正整数
输出二进制字符串
示例
输入:9输出:1001
Demo49 二进制转十进制
题目描述
输入一个二进制字符串,输出其对应的十进制数字
输入输出描述
输入一个二进制字符串
输出十进制数字
示例
输入:1001输出:9
Demo50 十进制转十六进制
题目描述
输入一个十进制正整数,输出其十六进制形式
输入输出描述
输入一个十进制正整数
输出十六进制字符串
示例
输入:1233321输出:1e1b9
实例代码
num = eval(input())
s = ""
while num != 0:
y = num % 16
if y >= 10:
y = chr(ord('A') + y - 10)
s = str(y) + s
num = num // 16
print(s)
Demo51 十六进制转十进制
题目描述
输入一个十六进制字符串,输出其对应的十进制数字
输入输出描述
输入一个十六进制字符串
输出十进制数字
示例
输入:1e1b9输出:123321
实例代码
"""
这个函数使用了两个主要的函数:chr() 和 ord()。
chr() 函数接受一个整数参数,并返回该整数对应的 ASCII 字符。例如,chr(65) 返回字符 'A',chr(97) 返回字符 'a'。
ord() 函数接受一个字符参数,并返回该字符对应的 ASCII 码值。例如,ord('A') 返回整数 65,ord('a') 返回整数 97。
在这个函数中,我们遍历十六进制字符串的每个字符。如果字符是数字字符(‘0’ 到 ‘9’),我们直接将其转换为整数并乘以相应的权值(16 的幂次)。
如果字符是字母字符(‘a’ 到 ‘f’),我们将其转换为相应的十进制数值。这里需要注意的是,十六进制中的字母 ‘a’ 到 ‘f’ 对应的十进制数值是 10 到 15。
所以我们使用 ord(hex_str[i].lower()) - 87 来获取对应的十进制数值。
最后,我们将所有数值相加得到最终的十进制数值,即完成了从十六进制到十进制的转换。
"""
def hex_to_decimal(hex_string):
decimal_value = 0
for digit in hex_string:
ascii_value = ord(digit) # 将十六进制字符转换为对应的ASCII码
if 65 <= ascii_value <= 70:# 如果是大写字母,则转换为对应的数字
decimal_digit = ascii_value - 55
elif 97 <= ascii_value <= 102:# 如果是小写字母,则转换为对应的数字
decimal_digit = ascii_value - 87
elif 48 <= ascii_value <= 57:# 如果是数字,则转换为对应的数字
decimal_digit = ascii_value - 48
else:
raise ValueError("Invalid hexadecimal character: {}".format(digit))
decimal_value = decimal_value * 16 + decimal_digit
return decimal_value
hex_string = input()
decimal_value = int(hex_string, 16)
print( decimal_value)
Demo52 最长公共前缀
题目描述
给定两个字符串
s1
和
s2
,求两个字符串最长的公共前缀串,字符区分大小写
输入输出描述
输入两行,分别表示
s1
和
s2
输出前缀串
示例
输入:abcdefgabcdhko输出:abcd
Demo53 子串出现的次数
题目描述
给定两个字符串
s1
和
s2
,求
s2
在
s1
中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配
输入输出描述
输入两行字符串,分别为
s1
和
s2
,
s2
的长度小于等于
s1
输出
s2
在
s1
中出现的次数
示例1
输入:ABCsdABsadABCasdhjabcsaABCasdABC输出:3
示例2
输入:AAAAAAAAAAA输出:2
Demo54 最长公共子串
题目描述
给定两个字符串
s1
和
s2
,求
s1
与
s2
之间的最长公共子串,字符区分大小写
输入输出描述
输入两行字符串,分别为
s1
和
s2
输出最长公共子串
示例
输入:123ABCDEFG83hsadiughABCDEFG23uy输出:ABCDEFG
Demo55 检测密码
题目描述
一些网站会给密码强加一些规则:
- 密码必须至少有8个字符
- 密码只能包含英文字母和数字
- 密码应该至少包含两个数字
- 密码应该至少包含两个大写字母
- 如果密码符合规则,输出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 梅森素数
如果一个素数可以写成的形式,其中p
是某个正整数,那么这个素数就称作梅森素数
输出
p
≤
31
的所有梅森素数
Demo60 平方根的近似求法
当
nextGuess
和
lastGuess
几乎相同时,
nextGuess
就是平方根的近似值
lastGuess
初始值为
1
,如果
nextGuess
和
lastGuess
的差值小于一个很小的数,比如
0.0001
,就可以认为nextGuess是
n
的平方根的近似值;否则,
nextGuess
成为下一次计算的
lastGuess
,近似过程继续执行
编写代码,求解
n
的平方根的近似值