Python编程练习

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.03
1140.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.35
18.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
输出:
1902
214

实例代码 

"""
数据: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.5
3.5
10.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
输出:
3
1
2
5

实例代码 

"""
数据:四位整数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.26
90.00
74.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
输出:
12
10000

示例2

输入:
12
输出:
21
3000

示例3

输入:
12
输出:
23
1000

示例4

输入:
12
输出:
45
0

实例代码

"""
数据:随机产生的数字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.0
3.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 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
输出:
相离

2部分 循环语句

此部分重点练习: for 循环语句、 while 循环语句、函数、字符串

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
模式
1 2 3 4 5 6
   1 2 3 4 5
      1 2 3 4
         1 2 3
            1 2
               1

实例代码

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

题目描述

利用循环,寻找规律,打印如下数字模式:
                  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

实例代码

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
输出前缀串

示例

输入:
abcdefg
abcdhko
输出:
abcd

Demo53 子串出现的次数

题目描述

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

输入输出描述

输入两行字符串,分别为 s1 s2 s2 的长度小于等于 s1
输出 s2 s1 中出现的次数

示例1

输入:
ABCsdABsadABCasdhjabcsaABCasd
ABC
输出:
3

示例2

输入:
AAAAAAAA
AAA
输出:
2

Demo54 最长公共子串

题目描述

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

输入输出描述

输入两行字符串,分别为 s1 s2
输出最长公共子串

示例

输入:
123ABCDEFG83hsad
iughABCDEFG23uy
输出:
ABCDEFG

Demo55 检测密码

题目描述

一些网站会给密码强加一些规则:
  1. 密码必须至少有8个字符
  2. 密码只能包含英文字母和数字
  3. 密码应该至少包含两个数字
  4. 密码应该至少包含两个大写字母
  5. 如果密码符合规则,输出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 的平方根的近似值
  • 44
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值