云计算python第六次作业

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


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾44

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值