1.讲控制台用户登录注册购买英雄案例
import sys
users={}
def register():
"""注册新用户"""
print("欢迎来到注册页面!")
username = input("请输入您的用户名:")
password = input("请输入您的密码:")
while True:
confirm_password = input("请再次输入您的密码以确认:")
if password == confirm_password:
break
else:
print("密码输入不一致,请重新输入!")
users[username] = password
print("注册成功!{}".format(username))
return True
def login():
"""登录用户"""
print("欢迎来到登录页面!")
username = input("请输入您的用户名:")
password = input("请输入您的密码:")
if username in users and users[username] == password:
print("登录成功!欢迎回来,{}".format(username))
return True
else:
print("用户名或密码错误,请重新输入!")
return False
while True:
print("\t英雄联盟商城登录界面\t\t\t")
print("***********")
print("\t\t1.用户登录\t\t\t")
print("\t\t2.新用户注册\t\t\t")
print("\t\t3.退出系统\t\t\t")
print("***********")
print("请输入您的选项: ",end='')
choice = int(input())
if choice == 1:
login()
while True:
print("\t商城首页\t\t\t")
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
print("\t\t1.进入英雄超市\t\t\t")
print("\t\t2.休闲小游戏\t\t\t")
print("\t\t3.退出登录\t\t\t")
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
choice = int(input("请输入您的选项: "))
if choice == 1:
print("欢迎来到英雄超市!做出你的选择吧~")
#商城的英雄选择
print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
print("编号 姓名 昵称 价格 库存 描述")
print("1 纳尔 迷失之牙 3500 100 丛林不会原谅盲目与无知")
print("2 锐雯 放逐之刃 4000 100 她是残忍高效的战士 ")
print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
choice = int(input())
#判断选择的是哪个英雄
if choice == 1:
print("您的选择是纳尔")
elif choice == 2:
print("您的选择是瑞文")
else:
input("对不起,没有找到您选择的英雄!请重新选择,按任意键继续\n")
elif choice == 2:
pass
elif choice == 3:
sys.exit()
elif choice == 2:
register()
elif choice == 3:
sys.exit()
else:
print("您的输入有误,请重新输入!")
#执行结果
2、不死兔子
def rabbit(num) :
if num == 1 or num == 2 or num == 3 or num == 4 :
return 1
else :
return rabbit(num - 1) + rabbit(num - 4)
num = int(input("请输入时间(几个月):"))
print(rabbit(num))
3.输入字符串,判断该字符串是否是回文字符串。
array = (input("请输入一个字符串:"))
array = [str(i) for i in array]
print(f"原列表:{array}")
temp = array[: : -1]
print(f"翻转后:{temp}")
if array == temp :
print("该字符串是一个回文字符串")
else :
print("该字符串不是一个回文字符串")
4.给定一个正整数N,找出1到N(含)之间所有质数的总和。
def is_sushu(num):
for i in range(2, num // 2 + 1):
if num % i == 0:
return False
return True
N = int(input("请输入一个数:"))
temp = 0
for i in range(1 , N + 1) :
if is_sushu(i) :
temp += i
print(temp)
5.小明有一堆苹果,他每天吃掉这堆的一半加一个,等第六天,小明剩余1个苹果,问,这堆苹果共多少个?
i = 1
num = 1
while i < 6 :
num = (num + 1) * 2
i += 1
print(num)
6.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前。
A = input("请输入一个数组:")
A = [int(i) for i in A]
for i in range(len(A) - 1) :
for j in range(len(A) - 1 , 0 , -1) :
if A[j] < A[j - 1] :
A[j] , A[j - 1] = A[j - 1] , A[j]
temp_o = []
temp_j = []
for i in A :
if i % 2 ==0 :
temp_o.append(i)
else :
temp_j.append(i)
A = []
for i in temp_o :
A.append(i)
for j in temp_j :
A.append(j)
print(A)
7.合并两个有序数组,合并后还是有序列表。
array1 = input("请输入第一个数组:")
array2 = input("请输入第二个数组:")
array1 = [int(i) for i in array1]
array2 = [int(j) for j in array2]
for i in array2 :
array1.append(i)
for i in range(len(array1) - 1) :
for j in range(len(array1) - 1 , 0 , -1) :
if array1[j] < array1[j - 1] :
array1[j] , array1[j - 1] = array1[j - 1] , array1[j]
print(array1)
8.求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
while True :
a = int(input("请输入一个数(1~9):"))
if a <= 9 or a >= 1 :
break
else :
print("输入错误,请重新输入")
temp = int(input("请输入想要计算的项数:"))
array = []
num = 0
for i in range(temp) :
array.append(a)
array = [str(i) for i in array]
num += int(''.join(array))
print(num)
60道题
Demo01 摄氏温度转化为华氏温度
celsius=float(input("摄氏温度"))
fahrenheit=(9/5)*celsius+32
print(f"华氏温度为{fahrenheit}")
Demo02 计算圆柱体的体积
r,h=map(int, input("半径和高分别为:" ).split())
area=r * r * 3.14
volume=area * h
print(area)
print(volume)
Demo03 将英尺数转换为米数
yinchi=float(input("英尺数:"))
mi=yinchi * 0.305
print(f"转换为的米数为{mi}")
Demo04 计算小费
xiaoji=float(input("小计:"))
choujin=float(input("酬金率:"))
xiaofei=choujin * xiaoji
sum=xiaoji + xiaofei
print(f"小费{xiaofei}")
print(f"合计金额{sum}")
Demo05 对一个整数中的各位数字求和
num=int(input("请输入一个0~1000的整数"))
num_sum=0
while num > 0:
num_sum += num % 10
num //=10
print(num_sum)
Demo06 计算年数和天数
num=int(input("分钟数:"))
num_tian=num / (60 *24)
num_nian=num_tian / 365
print(f"过了{num_tian}天")
print(f"过了{num_nian}年")
Demo07 计算能量
M = float(input("水量"))
initial_temperature = float(input("初始温度"))
final_temperature = float(input("最终温度"))
Q = M * (final_temperature - initial_temperature) * 4184
print(f"所需的能量为:{:.1f} 焦耳")
Demo08 分割数字
M = int(input(""))
while M > 0:
num=0
num+=M % 10
M //=10
print(num)
Demo9.输入三角形的三个顶点坐标,并计算其面积,计算公式如下
x1 = float(input("请输入第一个顶点的x坐标: "))
y1 = float(input("请输入第一个顶点的y坐标: "))
x2 = float(input("请输入第二个顶点的x坐标: "))
y2 = float(input("请输入第二个顶点的y坐标: "))
x3 = float(input("请输入第三个顶点的x坐标: "))
y3 = float(input("请输入第三个顶点的y坐标: "))
s = (abs(x1 - x2) + abs(y1 - y2) + abs(x2 - x3) + abs(y2 - y3) + abs(x3 - x1) + abs(y3 - y1)) / 2
area = math.sqrt(s * (s - abs(x1 - x2)) * (s - abs(y1 - y2)) * (s - abs(x2 - x3)) * (s - abs(y2 - y3)) * (s - abs(x3 - x1)) * (s - abs(y3 - y1)))
print("三角形的面积为:", area)
Demo10.输入你所在的时区,并输出当前的时
def get_current_time(timezone):
tz = pytz.timezone(timezone)
current_time = datetime.datetime.now(tz)
return current_time.strftime('%H:%M:%S')
timezone = input("请输入时区(例如:东八区为8,西五区为-5):")
print(f"当前时间为:{get_current_time(timezone)}")
Demo11.输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制)
x1, y1 = map(float, input("请输入第一个顶点的坐标(x,y): ").split())
x2, y2 = map(float, input("请输入第二个顶点的坐标(x,y): ").split())
x3, y3 = map(float, input("请输入第三个顶点的坐标(x,y): ").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)
A=math.acos((a*a-b*b-c*c)/(-2*b*c))
B=math.acos((b*b-a*a-c*c)/(-2*a*c))
C=math.acos((c*c-b*b-a*a)/(-2*a*b))
print("角度1: ", A)
print("角度2: ", B)
print("角度3: ", C)
Demo12 最小数量的硬币
denominations = [1, 0.25, 0.1, 0.05, 0.01] # 硬币面值
denominations.sort(reverse=True) # 将硬币面值排序,从大到小
def minCoins(x):
coins = [0] * len(denominations) # 初始化硬币数量为0
while x > 0:
for i in range(len(denominations)):
if x >= denominations[i]: # 如果当前硬币面值大于等于剩余金额
x -= denominations[i] # 减去当前硬币面值
coins[i] += 1 # 当前硬币数量加1
return min(coins) # 返回硬币数量最小的组合
print(minCoins(10)) # 测试总金额为10的例子
Demo13 正多边形的面积
n, s = map(int, input().split())
area = (n * s ** 2) / (4 * math.tan(math.pi / n))
print("%.2f" % area)
Demo14 计算身体质量指数
def calculate_bmi(weight, height):
bmi = weight / (height ** 2)
return bmi
def interpret_bmi(bmi):
if bmi < 18.5:
return "超轻"
elif bmi < 25.0:
return "标准"
elif bmi < 30.0:
return "超重"
else:
return "肥胖"
# 获取用户输入的体重和身高
weight = float(input("请输入您的体重(千克):"))
height = float(input("请输入您的身高(米):"))
# 计算BMI指数并解释结果
bmi = calculate_bmi(weight, height)
print("您的BMI指数是:", round(bmi, 2))
print("您的健康状况属于:", interpret_bmi(bmi))
Demo15 判定闰年
def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return "Yes"
else:
return "No"
year = int(input("请输入一个年份:"))
result = is_leap_year(year)
print(result)
Demo16 中彩票
def get_bonus(user_input, random_num):
if user_input == random_num:
return 10000
elif sorted(user_input) == sorted(random_num):
return 3000
elif any(user_input.count(digit) == random_num.count(digit) for digit in "123456789"):
return 1000
else:
return 0
random_num = random.randint(10, 99)
user_input = int(input("请输入一个两位数:"))
random_num = str(random_num)
user_input = str(user_input)
print("随机产生的两位数是:", random_num)
print("您的奖金是:", get_bonus(user_input, random_num))
Demo17 解一元二次方程
a, b, c = map(float, input().split())
delta = b**2 - 4*a*c
if delta > 0:
r1 = (-b + math.sqrt(delta)) / (2*a)
r2 = (-b - math.sqrt(delta)) / (2*a)
print(f"r1 = {r1:.2f}, r2 = {r2:.2f}")
elif delta == 0:
r = -b / (2*a)
print(f"r = {r:.2f}")
else:
print("无实数解")
Demo18 解2×2线程方程
a, b, c, d, e, f = map(float, input().split())
x = (a + b + c + d + e - f) / 5.0
y = (a + b + c + d + f - e) / 5.0
print(f"x = {x:.1f}")
print(f"y = {y:.1f}")
Demo19 未来是周几
def calculate_day(weekday, days):
days += 7
result = (weekday + days) % 7
days_of_week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
return days_of_week[result]
weekday = int(input(""))
days = int(input(" "))
print(calculate_day(weekday, days))
Demo20 本年中的第几天
from datetime import datetime
def day_of_year(year, month, day):
date = datetime(year, month, day)
day_of_year = date.timetuple().tm_yday
return day_of_year
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
print("该日是今年的第 {} 天。".format(day_of_year(year, month, day)))
Demo21 剪刀石头布I
def play_game():
computer_choice = random.randint(0, 2)
user_choice = int(input("请输入0、1或2:"))
print("计算机出了", ["剪刀", "石头", "布"][computer_choice])
print("用户出了", ["剪刀", "石头", "布"][user_choice])
if computer_choice == user_choice:
print("平局")
elif (computer_choice == 0 and user_choice == 1) or (computer_choice == 1 and user_choice == 2) or (computer_choice == 2 and user_choice == 0):
print("计算机赢了")
else:
print("用户赢了")
play_game()
Demo22 三角形的周长
a = float(input())
b = float(input())
c = float(input())
if a + b > c and a + c > b and b + c > a:
perimeter = a + b + c
print("三角形的周长为:", perimeter)
else:
print("非法输入")
Demo23 一周的星期几
def zeller_consistency(year, month, day):
if month < 3:
month += 12
year -= 1
h = (day + 2 * month + 3 * (month + 1) // 5 + year + year // 4 - year // 100 + year // 400) % 7
return h
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
week_day = zeller_consistency(year, month, day)
print("该日是周几:", week_day)
Demo24 直线的交点
import numpy as np
def find_intersection(x1, y1, x2, y2, x3, y3, x4, y4):
# 定义四个点的坐标
A1 = np.array([x1, y1])
A2 = np.array([x2, y2])
B1 = np.array([x3, y3])
B2 = np.array([x4, y4])
# 计算直线的斜率和截距
slope1 = (y2 - y1) / (x2 - x1)
intercept1 = y1 - slope1 * x1
slope2 = (y4 - y3) / (x4 - x3)
intercept2 = y3 - slope2 * x3
# 计算交点的x坐标
x = (slope1 * intercept2 - slope2 * intercept1) / (slope1 - slope2)
# 计算交点的y坐标
y = slope1 * x + intercept1
return x, y
# 测试代码
if __name__ == '__main__':
x1, y1, x2, y2, x3, y3, x4, y4 = map(float, input().split())
result = find_intersection(x1, y1, x2, y2, x3, y3, x4, y4)
if result is None:
print("两条直线平行")
else:
print("交点的坐标为:({:.2f}, {:.2f})".format(*result))
Demo25 回文数
def is_palindrome(num):
return str(num) == str(num)[::-1]
num = int(input("请输入一个三位整数:"))
if is_palindrome(num):
print("Yes")
else:
print("No")
Demo26 两个矩形
x1, y1, w1, h1 = map(int, input().split())
# 输入矩形2的中心坐标(x, y)和宽(w2)、高(h2)
x2, y2, w2, h2 = map(int, input().split())
# 计算两个矩形中心的距离的平方
dist_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
# 计算两个矩形的宽度和高度之和的平方
w_plus_w2 = w1 + w2
h_plus_h2 = h1 + h2
# 如果两个矩形中心距离小于等于宽度和高度之和,说明两个矩形相交
if dist_squared <= (w_plus_w2 ** 2 + h_plus_h2 ** 2):
# 计算两个矩形相交的面积
intersect_area = min(w1, w2) * min(h1, h2) / 2
# 计算两个矩形的总面积
total_area = w1 * h1 + w2 * h2 - intersect_area
# 如果两个矩形的面积之和大于任一矩形面积的4倍,说明两个矩形重叠
if total_area > 4 * min(w1 * h1, w2 * h2):
print("重叠")
else:
print("包含")
else:
print("相离")
Demo27 打印数字I
n = 7 # 打印的行数
# 打印模式A
for i in range(1, n+1):
print(' ' * (n - i) + str(i) + ' ' * (i - 1))
# 打印模式B
for i in range(n, 0, -1):
line = ' ' * (n - i) + str(i) + ' ' * (i - 1)
print(line.rstrip())
# 打印模式C
for i in range(n, 0, -1):
line = ' ' * (n - i) + str(i) + ' ' * (i - 1)
print(line[::-1])
# 打印模式D
for i in range(n, 0, -1):
line = ' ' * (n - i) + str(i) + ' ' * (i - 1)
print(line.rstrip()[::-1])
Demo28 打印数字II
n = 7 # 打印的行数
# 打印数字模式
for i in range(1, n+1):
# 打印行号和空格
print(' ' * (n - i) + str(i) + ' ' * (i - 1))
# 打印数字
for j in range(1, i+1):
print(j, end=' ')
print()
Demo29 打印数字III
n = 7 # 打印的行数
# 打印数字模式
for i in range(1, n+1):
# 打印每行的空格
for j in range(n-i):
print(" ", end="")
# 打印数字
for j in range(2*i-1):
print(i, end=" ")
print()
Demo30 打印菱形I
height = 9
for i in range(height):
# 打印空格
for j in range(height - i - 1):
print(" ", end="")
# 打印星号
for j in range(2 * i + 1):
print("*", end="")
print()
Demo31 打印菱形II
n = int(input("请输入菱形的高度:"))
# 循环打印上半部分菱形
for i in range(n // 2 + 1):
# 打印空格
for j in range(n // 2 - i):
print(" ", end="")
# 打印星号
for j in range(2 * i + 1):
print("*", end="")
print()
# 循环打印下半部分菱形
for i in range(n // 2):
# 打印空格
for j in range(i):
print(" ", end="")
# 打印星号
for j in range(2 * (n // 2 - i) - 1):
print("*", end="")
print()
Demo32 打印菱形III
n = int(input("请输入菱形的高度:"))
# 循环打印上半部分菱形
for i in range(n):
# 打印空格
for j in range(n - i - 1):
print(" ", end="")
# 打印星号
for j in range(2 * i + 1):
print("*", end="")
print()
# 循环打印下半部分菱形
for i in range(n - 2, -1, -1):
# 打印空格
for j in range(i):
print(" ", end="")
# 打印星号
for j in range(2 * (n // 2 - i) - 1):
print("*", end="")
print()
Demo33 猜数字
random_num = random.randint(0, 100)
# 循环等待用户输入数字
while True:
# 获取用户输入的数字
user_num = int(input("请输入一个整数:"))
# 判断用户输入的数字与随机数的大小关系并输出提示信息
if user_num < random_num:
print("过低!")
elif user_num > random_num:
print("过高!")
else:
print("恭喜你猜中了!数字是:", random_num)
break # 猜中后结束循环
Demo34 最大公约数I
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# 测试
print(gcd(4, 2)) # 输出:2
print(gcd(16, 24)) # 输出:8
Demo35 判断素数
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
n = int(input("请输入一个大于1的正整数:"))
if is_prime(n):
print("Yes")
else:
print("No")
Demo36 最小公倍数
def lcm(a, b):
gcd = a*b // math.gcd(a, b)
return a*b // gcd
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
print("最小公倍数是:", lcm(a, b))
Demo37 整数的素因子
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
num = int(input("请输入一个正整数:"))
factors = prime_factors(num)
for factor in factors:
print(factor)
Demo38 完全数
def is_perfect_number(num):
factors = []
for i in range(1, num):
if num % i == 0:
factors.append(i)
return sum(factors) == num
num = int(input("请输入一个正整数:"))
if is_perfect_number(num):
print(f"{num} 是完全数")
else:
print(f"{num} 不是完全数")
Demo39 前50个素数
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
count = 0
num = 1
while count < 50:
if is_prime(num):
print(num)
count += 1
if count % 10 == 0:
print()
num += 1
Demo40 计算π
pi = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... + (-1)**29/(2*29-1))
print("π的近似值为:", pi)
Demo41 计算e
i = 1000000
result = 1 + sum([1/math.factorial(i) for i in range(1, i+1)])
print(f"e的近似值为:{result}")
Demo42 剪刀石头布II
rock = 1
paper = 2
scissors = 3
# 定义胜利者
computer_wins = 0
user_wins = 0
# 进行三局比赛
for i in range(3):
# 计算机出拳
computer_choice = random.randint(1, 3)
print("计算机出了", ["石头", "剪刀", "布"][computer_choice-1])
# 获取用户输入
user_choice = int(input("请输入1(石头)、2(剪刀)或3(布):"))
# 判断胜负
if user_choice == computer_choice:
print("平局")
elif (user_choice == rock and computer_choice == scissors) or (user_choice == paper and computer_choice == rock) or (user_choice == scissors and computer_choice == paper):
print("你赢了")
user_wins += 1
else:
print("计算机赢了")
computer_wins += 1
# 判断终极胜利者
if computer_wins > user_wins:
print("计算机是终极胜利者")
elif user_wins > computer_wins:
print("你是终极胜利者")
else:
print("平局")
Demo43 组合问题I
sum = 0
for i in range(1 , 8) :
for j in range(i , 8) :
print(i , j)
sum += 1
print(sum)
Demo44 组合问题II
import itertools
nums = [1, 2, 3, 4]
combinations = list(itertools.permutations(nums, 3))
result = [int(''.join(map(str, combo))) for combo in combinations]
print(result)
Demo45 水仙花数
for num in range(100, 1000):
a = num % 10
b = num // 10 % 10
c = num // 100
if num == a ** 3 + b ** 3 + c ** 3:
print(num)
Demo46 青蛙跳台阶
def frog(n) :
if n == 1 :
return 1
elif n == 2 :
return 2
else :
return frog(n - 1) + frog(n - 2)
print(f"一共有{frog(4)}种跳法")
Demo47 堆叠相加
a , n = input("输入两个数据分别为数字a和组数n,用空格分隔:").split()
sum = 0
for i in range(1 , int(n) + 1) :
sum = sum + int(a * i)
print(sum)
print("解释:")
for j in range(1 , int(n) + 1) :
if j < int(n) :
print(f"{a}" * j + "+" , end='')
else :
print(f"{a}" * j + "=" + str(sum))
Demo48 十进制转二进制
while True :
num = int(input("请输入一个正整数:"))
if num % 1 == 0 :
break
temp = []
#拆分为倒序的二进制
while num > 0 :
temp.append(num % 2)
num //= 2
#反转列表为正确的顺序
temp.reverse()
#输出
for i in temp :
print(i , end=" ")
Demo49 二进制转十进制
array = list(input('请输入一个二进制数:'))
#定义一个数容纳列表的长度
temp = len(array)
#初始化十进制的数
num_S = 0
#循环使用位阶计算该十进制数(累加)
for i in array :
num_S += int(i) * (2 ** (temp - 1))
temp -=1
print(num_S)
Demo50 十进制转十六进制
temp = list(input("请输入一个16进制的数:"))
#初始化十进制数
sum = 0
#计算列表中的元素个数
num = len(temp)
#循环计算,将字符串转换为整型计算
for i in temp :
if i == "a" :
sum += 10 * (16 ** (num - 1))
elif i == "b" :
sum += 11 * (16 ** (num - 1))
elif i == "c" :
sum += 12 * (16 ** (num - 1))
elif i == "d" :
sum += 13 * (16 ** (num - 1))
elif i == "e" :
sum += 14 * (16 ** (num - 1))
elif i == "f" :
sum += 15 * (16 ** (num - 1))
#本来就是整形的直接计算
else :
sum += int(i) * (16 ** (num - 1))
#位阶的幂
num -= 1
print(sum)
Demo51 十六进制转十进制
hex_number = 'a1b2'
dec_number = int(hex_number, 16)
print(dec_number)
Demo52 最长公共前缀
def longest_common_prefix(s1, s2):
i = 0
while i < len(s1) and i < len(s2) and s1[i] == s2[i]:
i += 1
return s1[:i]
Demo53 子串出现的次数
def count_substring(s1, s2):
count = 0
start = 0
end = 0
while end < len(s1):
start = s1.find(s2, start)
if start == -1:
break
end = start + len(s2) - 1
count += 1
return count
Demo54 最长公共子串
def longest_common_substring(s1, s2):
m = len(s1)
n = len(s2)
# 创建一个0矩阵,这个矩阵将用于动态规划
dp = [[0] * (n + 1) for _ in range(m + 1)]
# maxLength用于存储最长公共子串的长度
maxLength = 0
# end_position用于存储最长公共子串在s1中的结束位置
end_position = 0
# 遍历s1和s2,并使用动态规划计算最长公共子串
for i in range(1, m + 1):
for j in range(1, n + 1):
if s1[i - 1] == s2[j - 1]: # 如果字符相同,则在之前的计算基础上+1
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > maxLength: # 如果这是最大的公共子串,则更新maxLength和end_position
maxLength = dp[i][j]
end_position = i - 1
else: # 如果字符不同,则重置当前位置的值为0
dp[i][j] = 0
# 最长公共子串是 s1[start:end],其中start和end是根据end_position和maxLength计算得到的
start = end_position - maxLength + 1
return s1[start:end_position + 1]
# 测试函数
s1 = "ABCDEF"
s2 = "CDEFGHI"
print(longest_common_substring(s1, s2))
Demo55 检测密码
def check_password(password):
if len(password) < 8:
return "No"
elif not any(char.isdigit() for char in password):
return "No"
elif not any(char.isupper() for char in password):
return "No"
else:
return "Yes"
Demo56 回文素数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def is_palindrome(n):
return str(n) == str(n)[::-1]
count = 0
num = 0
while count < 100:
num += 1
if is_prime(num) and is_palindrome(num):
print(num, end=' ')
count += 1
if count % 10 == 0:
print()
Demo57 反素数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
count = 0
num = 0
while count < 100:
num += 1
if is_prime(num) and is_prime(int(str(num)[::-1])):
print(num, end=' ')
count += 1
if count % 10 == 0:
print()
Demo58 双素数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
i = 2
while i < 1000:
if is_prime(i) and is_prime(i + 2):
print(i, i + 2)
i += 1
Demo59 梅森素数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
for p in range(2, 32):
n = 2 ** p - 1
if is_prime(n):
print(n)
Demo60 平方根的近似求法
def sqrt_approx(n):
lastGuess = 1
nextGuess = (lastGuess + n / lastGuess) / 2
while abs(nextGuess - lastGuess) > 0.0001:
lastGuess = nextGuess
nextGuess = (lastGuess + n / lastGuess) / 2
return nextGuess