Python初识函数、闰年判断函数,水仙花数、学生信息管理系统、函数实现输入某年某月某日,判断这一天是这一年的第几天

练习题1


初识函数


要求:


1、函数是什么? 为什么要使用函数?
答:如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
为了代码重用性


2、定义、调用函数的格式分别是什么?
答:定义函数:
def 函数名():
函数体代码


调用函数:
函数名()


3、编写一段代码,定义一个函数求1-100之间所有整数的和,并调用改函数打印出结果。
答:def my_sum():
    """这是1-100的求和函数"""
    sum1 = 0
    for i in range(1, 101):
        sum1 += i
    return sum1


print(my_sum())


4、函数的文档说明有什么用?
答:可以通过help(函数名),查看文档说明,对别人使用有可读性的帮助


5、给第3题中的函数加一个文档说明。
答:def my_sum():
    """这是1-100的求和函数"""
    sum1 = 0
    for i in range(1, 101):
        sum1 += i
    return sum1


print(my_sum())


练习题2


函数中的参数、返回值、变量


要求:
1、什么是函数的参数?为什么使用参数?
答:函数的参数是形式参数,例如def my_sum(a, b),a、b就是函数my_sum的参数;
为了代码重用性,可以根据不同的参数调用同一个函数


2、分别说明什么是“形参”和“实参”。
答:定义函数时小括号中的参数,是用来接收参数用的,称为 “形参”
调用函数时小括号中的参数,是用来传递给函数用的,称为 “实参”


3、编写一段代码,定义一个函数求两个数之间所有整数的和,在调用该函数时传入这两个数的具体值。
答:def my_sum(a, b):
    """这是求两个数之间的所有整数和"""
    sum1 = 0
    for i in range(a, b):
        sum1 += i


    return sum1


print(my_sum(10, 50))


4、什么是返回值?
答:返回值就是调用函数后的结果,需要返回给调用者,告诉他是什么结果


5、将第3题中的计算结果作为返回值打印出来。
答:def my_sum(a, b):
    """这是求两个数之间的所有整数和"""
    sum1 = 0
    for i in range(a, b):
        sum1 += i


    return sum1


print(my_sum(10, 50))


6、函数有哪四种类型?
答:(1)无参数无返回值
(2)有参数无返回值
(3)无参数有返回值
(4)有参数有返回值


7、定义一个拥有参数的函数并调用,要求把参数打印出来
答:def my_print(str1):
    """这是一个输出参数的函数"""
    print(str1)


my_print("hello")


8、定义一个拥有返回值的参数并调用,要求调用后,把返回值打印出来
答:def my_return():
    """这是一个返回函数内变量的函数"""
    str1 = "python基础班9期"
    return str1


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、第几天要看是第几个月的,可以先求这个月份的前面天数加上今天是多少号,(记得考虑闰年平年)



















你可能感兴趣的:(Python)