Python经典例题20道

本文列举了20道Python编程挑战,涵盖数字问题、字符串操作、逻辑推理等多个方面,旨在提升编程能力。其中包括计算无重复数字的三位数、奖金提成计算、完全平方数判断、日期计算、排序算法、字母图案生成、购物卡组合、猜数游戏、字符串处理、数字加密、特殊日期统计、分糖果策略、货物摆放方案、卡片拼数字、美丽年份识别、合数个数统计和重复字符串问题。通过解决这些题目,可以深入理解Python编程和算法思维。
摘要由CSDN通过智能技术生成

第一部分 

【程序 1】

有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是 1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

from itertools import permutations

# 获取所有可能的排列组合
numbers = [1, 2, 3, 4]
permutations_list = list(permutations(numbers, 3))

# 过滤出三位数(百位不能为0,此处无需过滤)
valid_numbers = [''.join(map(str, perm)) for perm in permutations_list]

# 计算有效三位数的个数并打印
count = len(valid_numbers)
print(f"能组成{count}个互不相同且无重复数字的三位数")

# 打印所有符合条件的三位数
for number in valid_numbers:
    print(number)

# 注意:由于这里的数字都大于0,所以直接使用排列即可得到符合条件的三位数

【程序 2】

企业发放的奖金根据利润提成。利润(0)低于或等于 10万元时,奖金可提 10%;利润高于 10 万元,低于 20 万元时,低于 10万元的部分按 10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成540万60万之间时高于40万元的部分,可提成3%60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按 1%提成,从键盘输入当月利润1,求应发放奖金总数?

def calculate_bonus(profit):
    bonus = 0
    if profit <= 100000:
        bonus = profit * 0.1
    elif profit <= 200000:
        bonus = 10000 + (profit - 100000) * 0.075
    elif profit <= 400000:
        bonus = 17500 + (profit - 200000) * 0.05
    elif profit <= 600000:
        bonus = 30000 + (profit - 400000) * 0.03
    elif profit <= 1000000:
        bonus = 48000 + (profit - 600000) * 0.015
    else:  # 利润超过100万
        bonus = 66000 + (profit - 1000000) * 0.01
    
    return int(bonus)  # 返回整型奖金数额

# 输入利润值
profit_input = int(input("请输入当月利润(单位:万元): "))
bonus = calculate_bonus(profit_input)
print(f"应发放奖金总数为:{bonus}元")

【程序 3】

一个整数,它加上 100 后是一个完全平方数,再加上 268 又是一个完全平方数,请问该数是多少?

程序分析:在10万以内判断,先将该数加上100 后再开方,再将该数加上 268后再开方,如果开方后的结果满足如下条件,即是结果。

def find_integer():
    for num in range(100000):  # 在10万以内搜索
        square_1 = int((num + 100) ** 0.5) ** 2
        square_2 = int((num + 268) ** 0.5) ** 2
        
        if square_1 == num + 100 and square_2 == num + 268:
            return num

result = find_integer()
print(f"该数是:{result}")

【程序 4】输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

import datetime

def day_of_year(year, month, day):
    date_object = datetime.datetime(year, month, day)
    return date_object.timetuple().tm_yday

# 输入年份、月份和日期
year_input = int(input("请输入年份: "))
month_input = int(input("请输入月份: "))
day_input = int(input("请输入日期: "))

day_count = day_of_year(year_input, month_input, day_input)
print(f"{year_input}年{month_input}月{day_input}日是这一年的第{day_count}天")

【程序 5】

输入三个整数 x,Y.z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x 上,先将x与y进行比较,如果 xy则将x与y的值进行交换,然后再用x与工进行比较,如果xz则将x与工的值进行交换,这样能使x最小。

def sort_three_numbers(x, y, z):
    # 使用一个列表来简化交换过程,并利用sort方法排序
    numbers = [x, y, z]
    numbers.sort()
    
    return numbers

# 输入三个整数
x = int(input("请输入第一个整数: "))
y = int(input(
  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值