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