print(my_return())
练习题1
函数的应用
要求:
1、用函数实现一个判断用户输入的年份是否是闰年的程序。(这次就要求用函数来实现了!)
答:def isYears(input_years):
"""这是一个判断是否是闰年的函数"""
if (input_years % 400 == 0) or ((input_years % 4 == 0) and (input_years % 100 != 0)):
print("%s是闰年" % input_years)
else:
print("%s不是闰年" % input_years)
while True:
input_year = int(input("请输入一个年份,让我判断是否是闰年:"))
isYears(input_year)
提示:
1.能被400整除的年份
2.能被4整除,但是不能被100整除的年份
以上2种方法满足一种即为闰年
# 旧知识点回顾
2、打印出100-999之间所有的"水仙花数"。("水仙花数"是指一个三位以上的整数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。)
答:def my_Narcissistic():
"""这是一个求100-999的水仙花数"""
for i in range(100, 1000):
str1 = str(i)
if i == int(str1[0]) ** 3 + int(str1[1]) ** 3 + int(str1[2]) ** 3:
print(i)
my_Narcissistic()
习题1
1、课上的学生管理系统保存学生的信息是以列表的形式保存,请思考如何改成字典的形式
例如:
把: [["关羽", "40", "男"],["诸葛亮", "45", "男"]]
改成 [{"name": "关羽", "age":"40", "sex": "男"},{"name": "诸葛亮", "age":"45", "sex": "男"}]
答:info_list = []
userName = "admin"
passWord = "123456"
while True:
# 1、界面
print("--------学生信息管理器---------")
print("-----1、添加名片-----")
print("-----2、删除名片-----")
print("-----3、修改名片-----")
print("-----4、查询名片-----")
print("-----5、查询所有名片-")
print("-----6、退出循环-----")
print("-" * 30)
# 2、输入,接收用户输入的数字,执行相应的操作
command = int(input("请输入你的操作:"))
# 3、通过判断用户输入的数字是1,还是2,还是3...执行相应操作
if command == 1:
# 添加学生信息
name = input("请输入姓名:")
age = input("请输入年龄:")
sex = input("请输入性别:")
info_list.append({"name": name, "age": age, "sex": sex})
print("【info】:添加成功")
print(info_list)
elif command == 2:
# 删除学生信息
print(info_list)
name = input("删除:请输入姓名:")
for i in info_list:
if name in i.values():
del info_list[info_list.index(i)]
print("【info】:删除成功")
print(info_list)
break
else:
print("【Error】:查无此人")
elif command == 3:
print(info_list)
name = input("修改:请输入姓名:")
for i in info_list:
if name in i.values():
age = input("请输入修改后的年龄:")
sex = input("请输入修改后的性别:")
info_list[info_list.index(i)] = {name, age, sex}
print("【info】:修改成功")
print(info_list)
break
else:
print("【Error】:查无此人")
elif command == 4:
# 查询学生信息
name = input("查找:请输入查找姓名:")
for i in info_list:
if name in i.values():
print("%s的信息:" % name)
for k, v in i.items():
print("%s : %s" % (k, v))
break
else:
print("【Error】:查无此人")
elif command == 5:
# 查询所有学生信息
userName_input = input("请输入你的用户名:")
passWord_input = input("请输入你的密码:")
if (userName == userName_input) and (passWord == passWord_input):
print("所有学生信息如下:")
for i in info_list:
for k, v in i.items():
print("%s : %s" % (k, v))
print("----------------")
else:
print("【Error】:用户名或密码错误")
elif command == 6:
# 退出系统
# print("退出系统成功,谢谢使用")
# break
sign = input("【info】:确定要退出吗?(yes or no):")
if sign == "yes":
print("退出系统成功,谢谢使用")
break
else:
print("返回到主页面")
continue
else:
print("【Error】:请输入1-6之间的整数")
2、用函数实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去(闰年29天,平年28天)
答:
def isLeapYears(year):
"""这是一个判断是否是闰年的函数"""
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
# 返回1或者True为后面求值判断
return True
else:
# 返回0或者False为后面求值判断
return False
def CalculationDay(Ymd_input, year, month, day):
"""
这是一个计算天数的函数
Ymd_input:获取输入值
year:年
months:月份
days:日期
"""
# 存储第几天的变量
day_sum = 0
# 31天的月份
months_31 = [1, 3, 5, 7, 8, 10, 12]
# 30天的月份
months_30 = [4, 6, 9, 11]
# 在1-month + 1中取值才能包括month
for mon in range(1, month + 1):
# 判断月份-1是否还在列表中,在的话+31天
if mon-1 in months_31:
day_sum += 31
# 判断月份-1是否还在列表中,在的话+30天
elif mon-1 in months_30:
day_sum += 30
# 判断是否是闰年,月份-1是否等于2,是的话+29天
elif isLeapYears(year) and mon - 1 == 2:
day_sum += 29
# 月份-1是否等于2,是的话+28天
elif mon-1 == 2:
day_sum += 28
# 否则不加任何一天
else:
day_sum += 0
# 月份遍历完后的总天数加上今天几号,得出结果
day_sum += day
print("%s是%s年的第%s天" % (Ymd_input, year, day_sum))
def input_Ymd():
"""
这是一个输入函数,获取输入值,切片取值,嵌套调用CalculationDay()函数
Ymd:输入值
years:处理后的年
months:处理后的月份
days:处理后的日期
"""
Ymd = input("请输入年月日,格式为20180118:")
years = int(Ymd[:4])
months = int(Ymd[4:6])
days = int(Ymd[6:])
CalculationDay(Ymd, years, months, days)
while True:
input_Ymd()
例如:
20180118是2018年第18天
提示:
1、以20180118这样的格式输入
2、第几天要看是第几个月的,可以先求这个月份的前面天数加上今天是多少号,(记得考虑闰年平年)