python实例实现(2)

 day.3

一,打印一些简单的图案

#反直角三角
i=int(input("请输入一个数字:"))
for im in range(1,i+1):
    for j in range(i-im):
         print("",end=" ")
    for j in range(im):
         print("*",end="")

    print() 
#正直角三角
a=int(input("请输入数字:"))
for i in range(1,a+1):
     for j in range(1,i+1):
          print("*",end="")

     print()
#正等腰三角
n=int(input("请输入数字:"))
for i in range(1, n+1):    
    for j in range(n-i):  
        print(' ', end='')    
    for k in range(2*i-1):  
        print('*', end='')  
    print()
# 倒等腰三角
n=int(input("请输入数字:"))
for i in range(n+1,1,-1):
     for j in range(n+1-i):
         print(' ', end='')
     for k in range(2*i-1,2,-1):
         print('*', end='')  
     print()   
#菱形
n=int(input("请输入数字:"))
for i in range(1, n+1):    
    for j in range(n-i):  
        print(' ', end='')    
    for k in range(2*i-1):  
        print('*', end='')
    print()  
for i in range(n,1,-1):
     for j in range(n-i+1):
         print(' ', end='')
     for k in range(2*i-1,2,-1):
         print('*', end='')       
     print()      
#镂空菱形
n=int(input("请输入数字:")) 
for i in range(1, n+1):    
    for j in range(n-i):  
        print(' ', end='')    
    for k in range(2*i-1):
         if k==0 or k==2*i-2:
            print('*', end='')
         else:
              print(' ', end='')
    print()  
for i in range(n,1,-1):
     for j in range(n-i+1):
         print(' ', end='')
     for k in range(2*i-1,2,-1):
         if k==3 or k==2*i-1:
            print('*', end='')
         else:
              print(' ', end='')       
     print()

运行截图:

二. 判断一个数是否是质数(素数)

# 判断一个数是否是质数
prime=int(input("请输入一个数:"))
flag=True
for i in range(2,prime//2+1):
       if prime %2==0:
           flag=False
           break
if flag:
   print("是质数")

else:
   print("不是质数")

运行截图:

三.有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
 

max_num = None  
min_num = None  
  
# 遍历所有可能的千位和个位数字  
for thousand in range(1, 10):  # 千位不能为0  
    for unit in range(10):     # 个位可以为0-9  
        # 构造四位数  
        num = 1000 * thousand + 300 + 60 + unit  
          
        # 检查是否能被2和3整除  
        if num % 2 == 0 and num % 3 == 0:  
            # 更新最大和最小数  
            if max_num is None or num > max_num:  
                max_num = num  
            if min_num is None or num < min_num:  
                min_num = num  
  
# 打印结果  
print(f"满足条件的最大四位数是: {max_num}")  
print(f"满足条件的最小四位数是: {min_num}")

运行截图:

 四.编程求一个四位自然数ABCD,它乘以A后变成DCBA

#编程求一个四位自然数ABCD,它乘以A后变成DCBA
# 定义一个函数来反转一个整数  
def reverse_number(n):  
    return int(str(n)[::-1])  
  
# 遍历所有四位自然数  
for num in range(1000, 10000):  
    # 提取ABCD中的A, B, C, D  
    A = num // 1000  
    BCD = num % 1000  
    D = num % 10  
    CB = (BCD // 10)  
    C = CB % 10  
    B = CB // 10  
  
    # 检查是否满足条件:ABCD * A = DCBA  
    if num * A == reverse_number(num):  
        answer = num  
        break  
  
print(f"满足条件的四位自然数ABCD是:{answer}")

运行截图:

五. 用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b

# 获取用户输入的两个数  
a = int(input("请输入第一个数a: "))  
b = int(input("请输入第二个数b: "))  
  
# 根据条件判断输出结果  
if a % b == 0 or a + b > 1000:  
    output = a  
else:  
    output = b  
  
# 输出结果  
print("输出结果为:", output)
          

运行截图:

六.请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

# 获取用户输入的数字  
num = int(input("请输入一个数: "))  
  
# 判断数字是偶数还是奇数  
if num % 2 == 0:  
    print(f"{num} 是偶数。")  
    # 如果是偶数,则找出从1到该数是3的倍数的数字  
    multiples_of_three = [i for i in range(1, num + 1) if i % 3 == 0]  
    print(f"从1到{num}的3的倍数有: {multiples_of_three}")  
else:  
    print(f"{num} 是奇数。")  
    # 如果是奇数,则找出从1到该数是5的倍数的数字  
    multiples_of_five = [i for i in range(1, num + 1) if i % 5 == 0]  
    print(f"从1到{num}的5的倍数有: {multiples_of_five}")

运行截图:

七. 某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

# 定义折扣规则  
def calculate_t_shirt_price(quantity):  
    if quantity == 1:  
        return t_shirt_price  
    elif quantity == 2:  
        return t_shirt_price * 0.9 * quantity  
    else:  # 3件以上  
        return t_shirt_price * 0.8 * quantity  
  
def calculate_pants_price(quantity):  
    if quantity == 1:  
        return pants_price  
    else:  # 2条以上  
        return pants_price * 0.9 * quantity  
  
# 小明购买的T恤和裤子的数量  
t_shirt_quantity = 3  
pants_quantity = 2  
  
# 计算T恤和裤子的总价  
total_t_shirt_price = calculate_t_shirt_price(t_shirt_quantity)  
total_pants_price = calculate_pants_price(pants_quantity)  
  
# 计算总价  
total_price = total_t_shirt_price + total_pants_price  
  
# 显示小明应该付多少钱  
print(f"小明购买的T恤总价是:{total_t_shirt_price}元")  
print(f"小明购买的裤子总价是:{total_pants_price}元")  
print(f"小明应该付的总金额是:{total_price}元")

运行截图:

 八.鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

# 定义头的总数和脚的总数  
total_heads = 35  
total_feet = 94  
  
# 假设所有的动物都是鸡(即每只动物都有2只脚)  
# 那么总的脚数将是头的总数的两倍  
total_feet_if_all_chickens = total_heads * 2  
  
# 计算比实际脚数少的脚数  
fewer_feet = total_feet_if_all_chickens - total_feet  
  
# 因为每只兔子比鸡多两只脚,所以兔子的数量就是比实际脚数少的脚数除以2  
num_rabbits = fewer_feet // 2  
  
# 因为头的总数是35,所以鸡的数量就是头的总数减去兔子的数量  
num_chickens = total_heads - num_rabbits  
  
# 输出结果  
print(f"鸡有 {num_chickens} 只,兔有 {num_rabbits} 只。")

运行截图:

九.猜数字游戏(使用random模块完成)
        电脑随机一个范围内的数,用户输入数据判断,
        如果数大了,提供”数大了“
        成功之后,加上用户是否继续功能

import random  
  
def play_guessing_game(lower_bound, upper_bound):  
    # 生成一个范围内的随机数  
    number_to_guess = random.randint(lower_bound, upper_bound)  
    attempts = 0  
      
    while True:  
        try:  
            # 获取用户输入  
            guess = int(input("请猜一个介于{}和{}之间的数字: ".format(lower_bound, upper_bound)))  
            attempts += 1  
              
            # 判断用户输入  
            if guess < number_to_guess:  
                print("数小了")  
            elif guess > number_to_guess:  
                print("数大了")  
            else:  
                print("恭喜你,猜对了!你一共猜了{}次。".format(attempts))  
                  
                # 询问用户是否继续  
                while True:  
                    continue_game = input("你想继续玩吗?(y/n): ")  
                    if continue_game.lower() == 'y':  
                        return True  # 继续游戏  
                    elif continue_game.lower() == 'n':  
                        return False  # 结束游戏  
                    else:  
                        print("无效的输入,请输入'y'或'n'。")  
        except ValueError:  
            print("无效的输入,请输入一个整数。")  
  
# 设置游戏的数字范围  
lower_bound = 1  
upper_bound = 100  
  
# 开始游戏循环  
while True:  
    if not play_guessing_game(lower_bound, upper_bound):  
        print("感谢参与,游戏结束!")  
        break

运行截图:

十:猜拳游戏:石头、剪刀、布的游戏

import random  
  
# 定义可能的选项  
choices = ['石头', '剪刀', '布']  
  
# 获取用户的输入  
def get_user_choice():  
    while True:  
        user_choice = input("请输入你的选择(石头、剪刀、布):")  
        if user_choice in choices:  
            return user_choice  
        else:  
            print("无效的输入,请重新输入。")  
  
def determine_winner(user_choice, computer_choice):  
    if user_choice == computer_choice:  
        return '平局'  
    elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布') or  (user_choice == '布' and computer_choice == '石头'):  
        return '你赢了'  
    else:  
        return '电脑赢了'  
  
# 主游戏循环  
while True:  
    # 获取用户的输入  
    user_choice = get_user_choice()  
      
    # 电脑随机选择  
    computer_choice = random.choice(choices)  
    print("电脑选择了:", computer_choice)  
      
    # 判断并输出结果  
    result = determine_winner(user_choice, computer_choice)  
    print(result)  
      
    # 询问用户是否继续  
    continue_game = input("你想继续玩吗?(y/n): ")  
    if continue_game.lower() != 'y':  
        break

运行截图:

day.4 

十一.用户登录注册案例

# 定义一个字典来存储用户信息  
users = {}  
  
# 注册函数  
def register():  
    username = input("请输入用户名: ")  
    if username in users:  
        print("该用户名已被注册,请尝试其他用户名。")  
        return  
    password = input("请输入密码: ")  
    users[username] = password  
    print("注册成功!")  
  
# 登录函数  
def login():  
    username = input("请输入用户名: ")  
    if username not in users:  
        print("该用户不存在,请先注册。")  
        return  
    password = input("请输入密码: ")  
    if users[username] == password:  
        print("登录成功!")  
    else:  
        print("密码错误,请重试。")  
  
# 主程序  
while True:  
    print("""  
    1. 注册  
    2. 登录  
    3. 退出  
    """)  
    choice = input("请选择操作: ")  
    if choice == '1':  
        register()  
    elif choice == '2':  
        login()  
    elif choice == '3':  
        break  
    else:  
        print("无效的选择,请重新输入。")

运行截图:

十二. 求50~150之间的质数是那些?

def is_prime(n):  
    """检查一个数是否为质数"""  
    if n <= 1:  
        return False  
    if n == 2:  
        return True  
    if n % 2 == 0:  
        return False  
    i = 3  
    while i * i <= n:  
        if n % i == 0:  
            return False  
        i += 2  
    return True  
  
# 找出50到150之间的所有质数  
prime_numbers = [n for n in range(50, 151) if is_prime(n)]  
print(prime_numbers)

.运行截图:

 十三.打印输出标准水仙花数,输出这些水仙花数

def is_narcissistic(n):  
    """判断一个数是否是水仙花数"""  
    digits = [int(d) for d in str(n)]  
    return n == sum(d**3 for d in digits)  
  
# 打印所有的三位水仙花数  
for i in range(100, 1000):  
    if is_narcissistic(i):  
        print(i)

运行截图:

十四.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def digit_sum(n):  
    """计算整数n的各位数字之和"""  
    return sum(int(digit) for digit in str(n))  
  
def verify_property(n):  
    """验证性质:整数n减去它的各位数字之和所得的差是否能被9整除"""  
    if n <= 9:  
        print("这个性质只适用于大于9的整数")  
        return False  
      
    difference = n - digit_sum(n)  
    if difference % 9 == 0:  
        print(f"{n}减去它的各位数字之和所得的差{difference}能被9整除")  
        return True  
    else:  
        print(f"{n}减去它的各位数字之和所得的差{difference}不能被9整除")  
        return False  
  
# 测试函数  
verify_property(456)

运行截图:

十五.一个五位数,若在它的后面写上一个7,得到一个六位数A, 若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此 五位数.

# 初始化变量  
answer = None  
  
# 循环遍历所有可能的五位数  
for i in range(10000, 100000):  # 五位数范围从10000到99999  
    A = int(str(i) + '7')  # 在五位数后面加上7,得到六位数A  
    B = int('7' + str(i))  # 在五位数前面加上7,得到六位数B  
      
    # 检查是否满足B是A的五倍的条件  
    if B == 5 * A:  
        answer = i  
        break  # 找到答案后退出循环  
  
# 输出结果  
if answer:  
    print(f"满足条件的五位数是:{answer}")  
else:  
    print("没有找到满足条件的五位数。")

运行截图:

十六.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

def min_moves(n):  
    if n <= 0:  
        return 0  
    dp = [0] * (n+1)  
    dp[1] = 1  
    if n >= 2:  
        dp[2] = 2  
    for i in range(3, n+1):  
        dp[i] = min(dp[i-1] + 1, dp[i-2] + 1)  
    return dp[n]  
  
# 测试 
n = 652  
print(f"有 {n} 个硬币,最少需要拿 {min_moves(n)} 次才能拿完。")

运行截图:

十七.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

def is_prime(n):  
    """判断一个数是否为素数"""  
    if n <= 1:  
        return False  
    if n == 2:  
        return True  
    if n % 2 == 0:  
        return False  
    i = 3  
    while i * i <= n:  
        if n % i == 0:  
            return False  
        i += 2  
    return True  
  
# 找出100以内的所有孪生素数对  
twin_primes = []  
for i in range(2, 100):  
    if is_prime(i) and is_prime(i + 2):  
        twin_primes.append((i, i + 2))  
  
print("100以内的孪生素数对有:")  
for pair in twin_primes:  
    print(pair)

运行截图:

十八.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

def find_statistics(lst):  
    if not lst:  # 检查列表是否为空  
        return None, None, None, None  
      
    # 初始化变量  
    min_val = lst[0]  
    max_val = lst[0]  
    total_sum = lst[0]  
    num_elements = 1  
      
    # 遍历列表中的其余元素  
    for num in lst[1:]:  
        # 更新最小值  
        if num < min_val:  
            min_val = num  
        # 更新最大值  
        if num > max_val:  
            max_val = num  
        # 更新总和  
        total_sum += num  
        # 更新元素数量  
        num_elements += 1  
      
    # 计算平均值  
    average = total_sum / num_elements  
      
    # 返回结果  
    return max_val, min_val, average, total_sum  
  
# 示例  
my_list = [3, 5, 1, 8, 4, 7, 2, 6]  
max_value, min_value, avg_value, total_sum = find_statistics(my_list)  
  
print(f"最大值: {max_value}")  
print(f"最小值: {min_value}")  
print(f"平均值: {avg_value}")  
print(f"总和: {total_sum}")

运行截图:

十九.将list中的重复数据去重,至少使用两种方案

方法一:

def remove_duplicates_with_set(lst):  
    return list(set(lst))  
  
# 示例  
lst = [1, 2, 3, 2, 1, 4, 5, 4]  
print(remove_duplicates_with_set(lst))  

 运行截图:

方法二:

def remove_duplicates_with_list_comprehension(lst):  
    return [x for i, x in enumerate(lst) if lst.index(x) == i]  
  
# 示例  
lst = [1, 2, 3, 2, 1, 4, 5, 4]  
print(remove_duplicates_with_list_comprehension(lst))

运行截图:

二十.如何将0-10随机存入列表中

import random  
  
# 创建一个空列表  
my_list = []  
  
# 使用循环将0到10之间的随机整数添加到列表中,例如添加10个这样的随机整数  
for _ in range(10):  
    my_list.append(random.randint(0, 10))  
  
print(my_list)

运行截图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值