第一部分
【程序 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(