Python第二次上机实习


1.用户任意输入某年某月某日,判断这一天是这一年的第几天?

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 先让用户分别输入年月日
year = int(input("年:"))
mouth = int(input("月:"))
day = int(input("日:"))

# 分别有两个列表分别存储平年和闰年中这一年到该月最后一天共有多少天
# mouth1为闰年,mouth2为平年
mouth1 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 336]
mouth2 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]

# 根据闰年还是平年判断这一天是这一年的第几天
if (year%4 ==0) and (year%100!= 0) or (year%400==0)and(year%400==0):
    number = mouth1[mouth-1] + day
else:
    number = mouth2[mouth-1] + day


# 输出这一天是这一年的第几天
print("这一天是这一年的第{}天".format(number))
  1. 某企业发放的奖金根据利润提成。当利润I

(1)低于或等于10万元时,奖金可提10%;

(2)利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;

(3)20万到40万之间时,高于20万元的部分,可提成5%;

(4)40万到60万之间时,高于40万元的部分,可提成3%;

(5)60万到100万之间时,高于60万元的部分,可提成1.5%;

(6)高于100万元时,超过100万元的部分按1%提成。

要求用户从键盘输入当月利润I,求应发放奖金总数?

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 让用户输入当月利润I
I = int(input("请输入当月利润(单位:万元):"))

# 根据不同等级计算利润
if I < 10:
    prize = I * 10000 * 0.1
elif I < 20:
    prize = 10000 + (I-10)*10000*0.075
elif I < 40:
    prize = 17500 + (I-20)*10000*0.05
elif I < 60:
    prize = 27500 + (I-40)*10000*0.03
elif I <= 100:
    prize = 33500 + (I-60)*10000*0.015
else:
    prize = 39500 + (I-100)*10000*0.01

print("应发放的奖金总数为:{}".format(prize))
  1. 编写函数判断51-150之间有多少个素数,并输出所有素数。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 创建一个空列表存储质数
    numbers = []
    
    for i in range(51, 151):
        # 依次判断51~150有哪些质数
        a = 2
        while a < i:
            if i % a == 0:
                break
            else:
                a = a + 1
        if a == i:
            numbers.append(i)
    
    # 依次输出列表中的质数
    print("列表中的质数为:")
    for i in numbers:
        print(i, end=',')

4.用户任意输入一个1000以内的正整数,编写函数实现因素分解并打印到屏幕上。如用户输入90,则打印90=2*3*3*5。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 让用户输入一个1000以内的整数
number = int(input("请输入一个1000以内的整数:"))
if number > 1000:
    print("输入的数大于1000,应该输入1000以内的整数。")

# 先输出number=
print("{}=".format(number), end='')

# 从2开始作为除数
i = 2

while True:
    # 获取该数的每个因子,并输出
    if number==1:
        print("1")
        break
    elif number==i:
        # 如果整数与i相等了,直接输出
        print(i, end='')
        break
    elif number%i==0:
        # 能够被整除,i就是一个因数,让数改变为除以i后的数
        print(i, end=''),
        print("*", end=''),
        number = number / i
    else:
        i+=1
  1. 键盘输入字符s,按要求把 s 输出到屏幕,

    格式要求:宽度为20个字符,等号字符=填充,居中对齐。如果输入字符串超过 20 位,则全部输出。例如:键盘输入字符串s为“PYTHON” ,屏幕输出=======PYTHON=======

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 获取字符后直接居中显示,用=在两边填充
s = input("请输入字符s:")
print(s.center(20, '='))
  1. 用户输入一组学生的姓名、性别、年龄等信息,采用空格分隔,每人一行,空行回车结束录入;

示例格式如下:

张三 男 23

李四 女 21

王五 男 18

计算并输出所有学生的平均年龄(保留2位小数)和其中男性人数,输出格式为:平均年龄是20.67,男性人数是2。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 获取用户输入的信息
print("每输入完一个学生的信息,按回车后输入下一位同学的信息,输入完毕后输入空格后回车退出输入。")
message = input("请输入学生的姓名、性别、年龄等信息,采用空格分隔:")

# 初始时总年龄为0,平均年龄为0,男性人数为0,学生个数为0
sumAge = 0
averageAge = 0
sumMan = 0
i = 0

# 使用while循环,当信息有效时,运行循环,如果输入的是空格,那么message为False退出循环
while message:
    # 每当获取一个人的信息,学生数量就加1
    i += 1
    # 用列表存储用户输入的信息
    ls = message.split()
    # 统计总年龄
    sumAge = sumAge + int(ls[2])
    # 如果为男性,男性数量就加1
    if ls[1] == "男":
        sumMan = sumMan+1
    message = input()
averageAge = sumAge/i


# 输出平均年龄与男性数量
print("平均年龄是{:.2f}男性人数是{}".format(averageAge, sumMan))

7.(选做)有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子。加入兔子都不死,问12个月后的兔子总数是多少?

#!/usr/bin/env python
# -*- coding:utf-8 -*-

"""
问题分析:通过分析每个月的兔子数量可得出以下数学规律:
    本月兔子数量=上上个月兔子数量+上个月兔子数量(为斐波那契数列)
"""

# 前两个月兔子数量没有变换都为1
mouth1 = 1
mouth2 = 1

# 先设总数为0
mouth3 = 0

# 根据斐波那契数列的规律依次计算,直至第12个月
# 每循环一次,本月兔子的数量变为上月兔子的数量
for i in range(3, 13):
    mouth3 = mouth1 + mouth2
    mouth1 = mouth2
    mouth2 = mouth3

print("第12个月的兔子对量为:{},兔子数量为{}。".format(mouth3, mouth3*2))

文章作者: 陈细利
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陈细利 !
评论
 上一篇
Python编程从入门到实践答案1 Python编程从入门到实践答案1
这本书是我自学Python的第一本书,里面的习题都在寒假已经完成,由于当时博客尚未搭建,故里面题目的答案并未发表。现在在开发项目博客没有新内容更新,因此这段实践会陆续上传原来的习题答案。每个题目均为自己设计的代码,优化与重构方面与标准答案可
下一篇 
Python第一次上机实习 Python第一次上机实习
1.用户输入a、b两个列表,计算两个列表对应元素的乘积的累加和。如果列表长度不一致,则以较短的列表为主,忽略较长列表的其他元素。如列表a=[1,2,3],列表b=[4,5,6,7],则对应元素乘积的累加和为14+25+3*6=32。 #!/
  目录