python练习--每日一练

python每日一练:
本文的题目来自菜鸟编程,查看原文答案可移步菜鸟编程。如有错误请指出,一起进步,加油!!!

问题一

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

def generate_numbers():
    count = 0
    for i in range(1, 5):
        for j in range(1, 5):
            for k in range(1, 5):
                if i != j and i != k and j != k:
                    num = i * 100 + j * 10 + k
                    print(num)
                    count += 1
    return count

total_count = generate_numbers()
print(f"总共能组成 {total_count} 个互不相同且无重复数字的三位数。")
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
总共能组成 24 个互不相同且无重复数字的三位数。

问题二

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

def calculate_bonus(profit):
    if profit <= 100000:
        bonus = profit * 0.1
    elif profit <= 200000:
        bonus = 100000 * 0.1 + (profit - 100000) * 0.075
    elif profit <= 400000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05
    elif profit <= 600000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03
    elif profit <= 1000000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015
    else:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01
    return bonus

# 从键盘输入当月利润
profit = float(input("请输入当月利润(单位:元):"))

# 计算应发放奖金总数
bonus_total = calculate_bonus(profit)

print(f"应发放奖金总数为:{bonus_total} 元")
请输入当月利润(单位:元):120000
应发放奖金总数为:11500.0 元

问题三

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

分析:假设这个整数为 x,根据题目描述,我们可以得到以下两个条件:
1.x + 100 是一个完全平方数
2.x + 100 + 168 是一个完全平方数

# 判断是否为完全平方数
def is_perfect_square(n):
    root = int(n ** 0.5)
    return root * root == n

def find_special_numbers():
    special_numbers = []
    for x in range(-100, 100000):
        if is_perfect_square(x + 100) and is_perfect_square(x + 100 + 168):
            special_numbers.append(x)
    return special_numbers

special_numbers = find_special_numbers()

if special_numbers:
    print("符合条件的整数是:", special_numbers)
else:
    print("未找到符合条件的整数")
符合条件的整数是: [-99, 21, 261, 1581]

问题四

题目:输入某年某月某日,判断这一天是这一年的第几天?

分析:例如201567号,先求2015年是不是闰年,然后求前五个月的天数再加上六月已过天数
def is_leap_year(year):
    # 判断是否是闰年
    return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)

def day_of_year(year, month, day):
    # 每个月的天数
    days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    # 如果是闰年,二月份有29天
    if is_leap_year(year):
        days_in_month[1] = 29
    
    # 计算之前月份的天数总和
    total_days = sum(days_in_month[:month - 1])
    
    # 加上给定的天数
    total_days += day
    
    return total_days

# 输入年月日(可省略)
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))

# 计算第几天
day_number = day_of_year(year, month, day)
print(f"{year}{month}{day}日是这一年的第{day_number}天。")

请输入年份:2015
请输入月份:6
请输入日期:7
2015年6月7日是这一年的第158天。

问题五

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

分析:使用Python的内置排序函数 sorted() 来实现将三个整数从小到大输出

def num_sort(x,y,z):
    return sorted([x, y, z])
num_sort(3,1,8)
[1, 3, 8]

问题六

题目:斐波那契数列。

斐波那契数列是一个经典的数学数列,定义如下:数列的第一个和第二个数字为 1,从第三个数字开始,每个数字都是前两个数字之和。

换句话说,第 n 个数字等于第 n-1 个数字加上第 n-2 个数字。

数学表示为:F(n) = F(n-1) + F(n-2),其中 F(1) = F(2) = 1。

斐波那契数列的前几个数字依次为:1, 1, 2, 3, 5, 8, 13, 21, 34, …

def fibonacci(n):
    fib=[1,1]
    for i in range(2,n):
        next_fib=fib[i-1]+fib[i-2]
        fib.append(next_fib)
    return fib
fibonacci(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

问题七

题目:将一个列表的数据复制到另一个列表中

#切片操作
ori_lst=[1,2,3,4]
copy_lst=ori_lst[:]
print(copy_lst)
[1, 2, 3, 4]
ori_lst=[1,2,3,4]
copy_lst=[]
for i in ori_lst:
    copy_lst.append(i)
print(copy_lst)
[1, 2, 3, 4]

问题八

题目:输出 9*9 乘法口诀表。

def multiplication_table():
    for i in range(1, 10):
        for j in range(1, i + 1):
            product = i * j
            print(f"{j} x {i} = {product}\t", end="")
        print()

# 调用函数输出乘法口诀表
multiplication_table()

1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	

问题九

题目:暂停一秒输出

使用 time 模块的 sleep() 函数。

import time

print("开始输出")
time.sleep(1)  # 暂停一秒
print("暂停一秒后输出")

开始输出
暂停一秒后输出

问题十

题目:暂停一秒输出,并格式化当前时间。

import time
import datetime

print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
2023-08-17 15:34:21
2023-08-17 15:34:22
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值