Python0320 – 题解

发布于 2024-03-20  2176 次阅读


请一次接收用户输入的4个数字(注意:数字必须是个位数,数字之间使用空格分隔),请计算能组成多少个互不相同且无重复数字的三位数,将这些数字存在一个列表中,并输出该结果列表。

input_string = input()
# 将输入转换为整形变量
numbers = [int(n) for n in input_string.split()]
result_list = []
# 采用集合剔除重复元素
unique_numbers = list(set(numbers))

# 生成所有可能的三位数
for i in range(len(unique_numbers)):
    for j in range(len(unique_numbers)):
        for k in range(len(unique_numbers)):
            # 确保所有选取的索引不同,以避免数字重复
            if i != j and i != k and j != k:
                num = int(str(unique_numbers[i]) + str(unique_numbers[j]) + str(unique_numbers[k]))
                # 添加到结果列表中,如果不重复
                if num not in result_list:
                    result_list.append(num)

result_list.sort()
print(result_list)

接收用户输入的当月利润p(单位是元),企业发放的奖金根据利润提成。利润p低于或等于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%提成,求应发放奖金总数并输出(单位为元)。

p = int(input())
bonus = 0
if p > 1000000:
    bonus += (p - 1000000) * 0.01
    p = 1000000
if p > 600000:
    bonus += (p - 600000) * 0.015
    p = 600000
if p > 400000:
    bonus += (p - 400000) * 0.03
    p = 400000
if p > 200000:
    bonus += (p - 200000) * 0.05
    p = 200000
if p > 100000:
    bonus += (p - 100000) * 0.075
    p = 100000
bonus += p * 0.1
print(bonus)

请接收用户输入一个数字n,判断该数字是否为完全平方数,如果是输出:数字n为完全平方数;如果不是输出:数字n不是完全平方数

# 导入math库,用于sqrt开方
import math
n = int(input())
# 对n进行开方,输出位浮点数
sqrt_n = math.sqrt(n)
# 如果sqrt_n为整数,则n为完全平方数
if sqrt_n == int(sqrt_n):
    print(f"{n}是一个完全平方数")
else:
    print(f"{n}不是一个完全平方数")

接收用户输入的一个日期(年月日都使用数字表示,并用空格分隔),判断这一天是这一年的第几天,并输出类似如下的信息:这是2023年的第66天

year, month, day = map(int, input().split())
month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 如果是闰年,二月份改为29天
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    month_days[1] = 29

# 计算该日期是该年的第几天,计算方法为当年截止前一个月的所有天数加上当月过去的天数
day_of_year = sum(month_days[:month - 1]) + day
print(f"这是{year}年的第{day_of_year}天")

接收用户输入的三个整数x,y,z,请把这三个数由小到大输出。(注意,数据可能不止三个)

user_input = input()
numbers = [int(n) for n in user_input.split()]
numbers.sort()
print(*numbers)

接收用户输入的一个数字(要求在1-100之间),编写程序判断该数字是否为素数,如果是素数输出类似的信息:数字5是素数;如果不是素数输出类似的信息:数字4不是素数。

num = int(input())
# 定义素数状态
is_prime = True
if num > 1:
    # 从2到到n的开方逐一尝试,是否能被整除
    for i in range(2, int(num ** 0.5) + 1):
        # 若能被整除,则除了1与他自身外还有别的除数,该数不为素数
        if (num % i) == 0:
            # 更新素数状态
            is_prime = False
            break
else:
    is_prime = False
if is_prime:
    print(f"数字{num}是一个素数")
else:
    print(f"数字{num}不是一个素数")

接收用户输入的一个3位数(100-999之间的数字),判断该数字是否为“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如:153是一个“水仙花数”,因为153=1**3+5**3+3**3。如果是水仙花数请输出类似的信息:数字153是水仙花数;否则输出类似的信息:数字15不是水仙花数

num = int(input())
# 先将该数字转换成字符串,再遍历这个字符串中的每一个字符,将其转换为整形后进行立方操作,最后求和,判断和与原数是否相等
sum_of_cubes = sum(int(digit)**3 for digit in str(num))
if sum_of_cubes == num:
    print(f"数字{num}是水仙花数")
else:
    print(f"数字{num}不是水仙花数")

接收用户输入多名同学的python课程设计成绩(数字之间用空格分隔),并将其存储在成绩列表grades中,然后编写程序将这些同学的成绩转换为相应的等级A(大于等于90分)、B(大于等于80分且小于90分)、C(大于等于70分且小于80分)、D(大于等于60分且小于70分)、E(小于60分),将对应的等级存储levels列表中,并输出列表levels

user_input = input()
grades = [int(n) for n in user_input.split()]
levels = []
for grade in grades:
    if grade >= 90:
        levels.append('A')
    elif grade >= 80:
        levels.append('B')
    elif grade >= 70:
        levels.append('C')
    elif grade >= 60:
        levels.append('D')
    else:
        levels.append('E')
print(levels)

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.请接收用户输入的一个数(0-99之间),判断其是否位完数,如果是完数输出类似的信息:数字6是完数;否则输出类似的信息:数字5不是完数。(提示:1被认定为是完数)

num = int(input())
# 完数的定义:一个数如果恰好等于它的因子之和,这个数就称为“完数”
# 判断方法,遍历从1到比他小1的整数,如果能被整除,即余数为0,则该数为输入数的因子,将因子相加求和,判断与原数是否相等
# 题目中特别定义了1为完数,故对1进行特别处理
if num == 1:
    print(f"数字{num}是完数")
else:
    sum_of_factors = sum(i for i in range(1, num) if num % i == 0)
    if sum_of_factors == num:
        print(f"数字{num}是完数")
    else:
        print(f"数字{num}不是完数")

一个数如果恰好等于它的因子之和,这个数就称为“完数”。请编写代码,请接收用户输入的数字n(0<n<=1000),找出0-n之间的完数,存储在一个数字列表中并输出。

n = int(input())
# 定义一个存储完数的列表
perfect_numbers = []
for num in range(1, n + 1):
    # 对1进行特殊处理
    if num == 1:
        perfect_numbers.append(num)
        continue
    sum_of_factors = sum(i for i in range(1, num) if num % i == 0)
    if sum_of_factors == num:
        # 如果是完数,则将其添加到完数列表中
        perfect_numbers.append(num)
print(perfect_numbers)