Python习题(程序结构与算法部分)

Python习题(程序结构与算法部分)

1.编写一个 python 程序,输入两个数,比较它们的大小并输出其中较大者。

# -*- coding: utf-8 -*-
# @Time    : 2020/5/25 18:13
# @Author  : VillageTony
# @Email   : diaoyongcheng392@163.com
# @File    : exam01.py
# @Software: PyCharm


"""

输入两个数,比较它们的大小并输出其中较大者

"""
try:
    num1 = int(input("请输入第一个数:"))
    num2 = int(input("请输入第二个数:"))
    if num1 > num2:
        print("最大的一个数是:", num1)
    elif num1 < num2:
        print("最大的一个数是:", num2)
    else:
        print("两个数相等!")
except:
    print("输入的数据不正确1")

2.输入三个数,输出其最大者

# -*- coding: utf-8 -*-
# @Time    : 2020/5/25 18:22
# @Author  : VillageTony
# @Email   : diaoyongcheng392@163.com
# @File    : exam02.py
# @Software: PyCharm

"""
输入三个数,输出其最大者
"""
a, b, c = 3, 4, 5

if a >= b:
    if a > c:
        print("最大数为:", a)
    else:
        print("最大数为:", c)
else:
    if b > c:
        print("最大数为:", b)
    else:
        print("最大数为:", c)


'''方法二'''
max_num = a
if max_num <= b:
    max_num = b
if max_num <= c:
    max_num = c
print("最大数为:", max_num)


'''方法三'''
num = []
try:
    for i in range(0,3):
        input_num = float(input("请输入数字:"))
        num.append(input_num)
    print(max(num))

except:
    print("输入数据不正确!")

3.求 1~100 间所有偶数的和

# -*- coding: utf-8 -*-
# @Time    : 2020/5/25 18:58
# @Author  : VillageTony
# @Email   : diaoyongcheng392@163.com
# @File    : exam03.py
# @Software: PyCharm

"""
求 1~100 间所有偶数的和
"""
"""方法一
通过range方法的 传入起始位置2 截止位置 102 (不包含结束位置,所以需要设置102),还有步长为 2
"""
sum = 0
for i in range(2, 102, 2):
    sum += i

print("1~100 间所有偶数的和:", sum)

"""
方法二
"""
sum2 = 0
for i in range(1, 101):
    if i % 2 == 0:
        sum2 += i
print("1~100 间所有偶数的和:", sum2)

4.用 Python 编写程序,输入一年份,判断该年份是否是闰年并输出

注:凡符合下面两个条件之一的年份是闰年。
( 1) 能被 4 整除但不能被 100 整除。
( 2) 能被 400 整除

# -*- coding: utf-8 -*-
# @Time    : 2020/5/25 19:11
# @Author  : VillageTony
# @Email   : diaoyongcheng392@163.com
# @File    : exam04.py
# @Software: PyCharm

"""
输入一年份,判断该年份是否是闰年并输出
结果。 注:凡符合下面两个条件之一的年份是闰年。 (1) 能被 4 整除但不能被 100 整除。 (2) 能被 400 整除。

"""
input_year = int(input("请输入年份:"))

if (input_year % 4 == 0 and input_year % 100 != 0) or (input_year % 400 == 0):
    print("{}是闰年".format(input_year))
else:
    print(f"{input_year}不是闰年")

5.假设一年期定期利率为 3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?

# -*- coding: utf-8 -*-
# @Time    : 2020/5/25 19:28
# @Author  : VillageTony
# @Email   : diaoyongcheng392@163.com
# @File    : exam05.py
# @Software: PyCharm


"""

假设一年期定期利率为 3.25%,计算一下需要过
多少年,一万元的一年定期存款连本带息能翻番?

"""
money = 10000
year = 0
while True:
    year += 1
    money = money * (1 + 0.0325)
    if money >= 20000:
        break
print(money)
print("{}年后连本带息能翻番".format(year))

"""
方法二
"""
while money < 20000:
    year += 1
    money = money * (1 + 0.0325)
print(f"{year}年后连本带息能翻番")

6.从键盘接收一百分制成绩 ( 0100), 要求输出其对应的成绩等级 AE。 其中,90 分以上为 'A' , 8089分为 'B' , 7079 分为'C' , 60~69 分为 'D' , 60 分以下为 'E'

# coding: utf-8
"""
@Time    : 2020/5/26 16:14
@Author  : VillageTony
@FileName: exam06.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
从键盘接收一百分制成绩 ( 0~100), 要求输出其对应的成绩等级 A~E。 其中,
90 分以上为 'A' , 80~89分为 'B' , 70~79 分为'C' , 60~69 分为 'D' , 60 分以
下为 'E'
"""
score = int(input("请输入分数:"))
score_grade = None
if score >= 90 and score <= 100:
    score_grade = 'A'
elif score >= 80 and score < 90:
    score_grade = 'B'
elif score >= 70 and score < 80:
    score_grade = 'C'
elif score >= 60 and score < 70:
    score_grade = 'D'
elif score < 60 and score >= 0:
    score_grade = 'E'
else:
    print("输入的成绩不正确")

print("您的分数等级是:", score_grade)

"""
方法二
"""
if score > 100:
    score_grade = "输入错误"
elif score >= 90:
    score_grade = 'A'
elif score >= 80:
    score_grade = 'B'
elif score >= 70:
    score_grade = 'C'
elif score >= 60:
    score_grade = 'D'
elif score >= 0:
    score_grade = 'E'
else:
    score_grade = "输入错误"

print(score_grade)

7.预设一个 0~9 之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大” ;小于预设的数,显示“太小” ,如此循环,直至猜中该数,显示“恭喜!你猜中了! ”

# coding: utf-8
"""
@Time    : 2020/5/26 16:28
@Author  : VillageTony
@FileName: exam07.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
猜数游戏。预设一个 0~9 之间的整数,让用户猜一猜并输入所猜的数,如果
大于预设的数,显示“太大” ;小于预设的数,显示“太小” ,如此循环,直
至猜中该数,显示“恭喜!你猜中了! ”。
"""
import random
number = random.randint(0, 10)
print(number)
while True:
    user_num = int(input("请输入你猜的数字:"))
    if user_num > number:
        print("太大")
    elif user_num < number:
        print("太小")
    elif user_num == number:
        print("恭喜!你猜中了!")
        break

8.输入一个数,判断这个数是否为素数,并输出判断结果。

所谓素数,是指除了 1 和该数本身之外,不能被其它任何整数整除的数

# coding: utf-8
"""
@Time    : 2020/5/26 16:37
@Author  : VillageTony
@FileName: exam08.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
输入一个数,判断这个数是否为素数,并输出判断结果。
( 所谓素数,是指除了 1 和该数本身之外,不能被其它任何整数整除的数
"""
number = int(input("请输入一个数:"))
if number < 2:
    print(number, "不是素数")
else:
    for i in range(2, number):
        if number % i == 0:
            print(number, "不是素数")
            break
    else:
        print(number, "是素数")

"""
方法二
"""
import math

n = int(input(" 请输入一个数 :"))
x = int(math.sqrt(n))
w = 0
for i in range(2, x + 1):
    if n % i == 0:
        w = 1
if w == 1:
    print(n, "不是素数。 ")
else:
    print(n, "是素数。 ")

9.输入一个时间(小时 : 分钟: 秒) ,输出该时间经过 5 分 30 秒后的时间

# coding: utf-8
"""
@Time    : 2020/5/26 17:01
@Author  : VillageTony
@FileName: exam09.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
输入一个时间(小时 : 分钟: 秒) ,输出该时间经过 5 分 30 秒后的时间
"""

hour, minute, second = input("请输入一个时间(H:M:S):").split(":")
hour = int(hour)
minute = int(minute)
second = int(second)
second += 30

if second >= 60:
    second = second - 60
    minute = minute + 1
    minute += 5
    if minute >= 60:
        minute = minute - 60
        hour = hour + 1
        if hour == 24:
            hour = 0
print(f"经过5 分 30 秒后的时间是:{hour}:{minute}:{second}")

10.一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如, 6 的因子为 1、 2、 3,而 6=1+2+3,因此 6 是完数。编程,找出 1000之内的所有完数,并输出该完数及对应的因子

# coding: utf-8
"""
@Time    : 2020/5/26 17:18
@Author  : VillageTony
@FileName: exam10.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如, 6 的因
子为 1、 2、 3,而 6=1+2+3,因此 6 是完数。编程,找出 1000之内的所有完
数,并输出该完数及对应的因子。
"""
# number = int(input("请输入一个数:"))
number = 1001
list = [1] # 保存因子
sum = 0  # 临时变量用于存放因子和
# 循环 进行判断  找出输入数字的因子,并且存入列表中,存列表之前判断列表中是否已经存在
for i in range(2, number):
    for j in range(2, i):
        if i % j == 0:
            if j not in list:  # 判断列表中是否有重复值
                list.append(j)
    for k in list: # 循环计算因子的和
        sum += k
    if sum == i:
        print(i ,"是完数", "对应的因子是:", list)
    list = [1]
    sum = 0

11.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子?

# coding: utf-8
"""
@Time    : 2020/5/26 19:01
@Author  : VillageTony
@FileName: exam11.py
@Software: PyCharm
@Blog    :https://www.diaoyc.cn/
"""

"""
编程,解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将
剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到
第 10 天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。

"""
day = 9
x = 1    # 第十天开始的时候桃子数
while day > 0:
    x = (x+1)*2
    day -= 1
print("第一天总共摘了{}个桃子".format(x))


Python习题(程序结构与算法部分)
https://www.diaoyc.cn//archives/python%E4%B9%A0%E9%A2%98%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E9%83%A8%E5%88%86
作者
Adiaoyc
发布于
2020年05月26日
许可协议