zoukankan      html  css  js  c++  java
  • 6、函数_1

    1.编写如下程序

    尝试函数部分分装:

    a.用户输入1-7七个数字,分别代表周一到周日

    b.如果输入1~5,打印对应的“周一”~“周五”,如果输入的数字是6或7,打印输出“周末”

    c.如果输入0,退出循环

    d.输入其他内容,提示:“输入有误,请重新输入!”

    提示:本题可以使用if和while循环,同时需要校验用户的输入是否正确。不用考虑浮点数等情况。

     

    2.列表去重

    将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]去除重复元素

     

    3.将两个变量的值进行交换(a = 100, b = 200)

    交换之后,a = 200, b = 100, 使用函数。

    4.编写如下程序

    尝试函数部分封装:

    输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数

    a.例如:一个65公斤的人,身高是1.62m,则BMI为 : 65 / 1.62 ** 2 = 24.8

    b.根据BMI指数,给与相应提醒

    低于18.5: 过轻 18.5-25:   正常 25-28:      过重 28-32:      肥胖 高于32:   严重肥胖
     
     
     
    # 方法1,定义一个字典,key值存储用户输入,value存储对应的周期;key作为参数传入函数。需要处理1-5,6-7,0,不在此里面的输入
    def my_input():
    """
    这是一个根据输入数值判断是周几的函数!
    定义一个字典,key值存储用户输入,value存储对应的周期;key作为参数传入函数。需要处理1-5,6-7,0,不在此里面的输入
    暂不判断浮点数、字符串、中文等输入
    :return:
    """
    # 定义一个正确输入的列表,此处可以优化,使用keys()来判断
    a = [1, 2, 3, 4, 5, 6, 7, 0]
    # 定义一个存储信息的字典,key为查询的数字,value为key对应的周几
    b = {
    1: "今天是周一,忙碌的一周开始了",
    2: "今天是周二,又是元气满满的一天",
    3: "今天是周三,已经过去2天啦",
    4: "今天是周四,离休息不远啦",
    5: "今天是周五,明天又可以嗨嗨嗨啦",
    6: "今天是周末,又是可以睡懒觉的一天",
    7: "今天是周末,继续嗨起来",
    0: "退出查询"
    }
    while True:
    my_str = int(input("请输入1-7的数字,判断今天是周几:"))
    if my_str in a[:7]: # 判断输入在正确范围1-7内
    print(b[my_str]) # 根据key从字典中得出周几
    elif my_str not in a: # 判断范围外的输入
    print("输入{}有误,请重新输入!".format(my_str))
    else: # 判断退出
    print("不查询了,我选择{}!".format(b[my_str]))
    break # 输入0,退出循环


    # 调用函数,需手动传入参数
    my_input()


    # 方法2 使用列表取值
    def week(i):
    week_list = ['周一', '周二', '周三', '周四', '周五', '周末', '周末']
    print(week_list[i - 1])


    while True:

    print('输入0-7八个数字,1-7分别代表周一到周日,0代表退出。')
    a = input('请输入:')
    # 输入必须为整数,且为0-7,否则报错!
    if a.isdigit() and int(a) in range(8):
    if a == '0':
    print('退出!')
    break
    else:
    print("输入有误,请重新输入!")

    print("~" * 50, "上面为第一题答案", "~" * 50) # 打印空行,区分每题结果


    # 方法2,定义列表,一个存储1-5,一个存储6-7,一个存储0 [1,2,3,4,5,6,7,0]

    # 方法3,土方法,一个个判断

    # 方法4,todo 精简版
    def get_week_name(num):
    dict_week = {"1": "周一", "2": "周二", "3": "周三", "4": "周四"
    , "5": "周五", "6": "周六", "7": "周日"}

    if num == "0":
    return "break"
    elif num not in dict_week.keys():
    return ("error")
    else:
    return dict_week[num]


    def main():
    while True:
    num = input("请输入1-7的数字,判断今天是周几:")
    out = get_week_name(num)
    if out == "break":
    break
    elif out == "error":
    print("输入信息有误!")
    continue
    else:
    print("今天是{}".format(out))

    main()

    """
    2.列表去重
    将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]去除重复元素
    """


    # todo 面试前作下这些题目,讲解多种方法,让自己在多个面试者当中脱颖而出

    # 方法1 定义不传参的函数,函数体,set去重
    def my_set(a):
    """
    这是一个去除列表重复元素的函数,使用集合去重,然后转成列表,return接收
    :param a: 变量a为参数
    :return:
    """
    b = list(set(a)) # 先转换列表为集合去重后在转换为列表
    return b # 接收最终的结果


    # 调用函数,传入列表,输出去重后的列表
    c = my_set([10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1])
    print("去重后的列表为{}".format(c)) # 打印


    # 方法2,定义一个空列表,循环判断输入值,在里面的不添加到空列表,最后打印原来的空字典
    def removal(num):
    a = [] # 定义一个空列表,用来接收不重复的元素
    for i in num: # 此处i为传入num的元素
    if i not in a: # TODO 判断添加进的元素是否重复
    a.append(i) # 将不重复的元素添加到原来的空列表
    # print(i)
    return a


    list_new = removal([10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1])
    print(list_new)


    # 方法3,TODO remove删除重复的元素,判断传入的参数元素个数,个数大于1,删除该元素
    def del_repetition(list_1):
    """
    去除列表中的重复元素
    :param list_1: 原始列表
    :return: 去重后的列表
    """
    new_list = list_1[:]
    for i in new_list: # 此处有坑,不能赋值给变量,否则会跳着取元素(因为索引是不断增加的,列表不断变化),TODO 推荐使用切片来复制
    if list_1.count(i) > 1: # 判断传入列表中重复的元素个数,大于1,删除该元素
    list_1.remove(i)
    return list_1


    list_1 = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
    print(del_repetition(list_1))


    # 方法4 使用count统计元素个数,定义一个空列表,判断里面的元素,如果空列表里没有则添加。
    def unique_list(source_list):
    new_list = []
    for item in source_list:
    if new_list.count(item) == 0: # TODO 判断新列表里是否有该元素,有则不添加,没有则添加
    new_list.append(item)
    return new_list


    print(unique_list([10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]))
    print("~" * 50, "上面为第二题答案", "~" * 50) # 打印空行,区分每题结果
    # 方法2 排序后,remove删除元素。

    # 方法3 排序后,pop删除元素,正负索引
    # 需要先找的重复元素的索引值。。。


    # 方法4,排序后,del删除元素,正负索引

    # 方法5,排序后,切片,正负索引

    """
    3.将两个变量的值进行交换(a = 100, b = 200)
    交换之后,a = 200, b = 100, 使用函数。
    """


    # 方法1,直接交换参数值,使用元祖解包,互换 值参数a,b传入值,return返回值
    def swap(a, b):
    """
    这是一个交换变量值的函数,直接重新赋值,return一个元祖
    :param a:变量a
    :param b:变量b
    :return:
    """
    b, a = a, b # 元祖解包
    return a, b # 返回交换后的值


    # 定义一个变量接收调用函数的结果,并打印输出
    my_ans = swap(100, 200)
    print("交换后的值为:{}".format(my_ans))


    def switch(a, b):
    a, b = b, a
    return a, b


    a = switch(100, 200)[0] # TODO 获取返回的a
    b = switch(100, 200)[1] # 获取返回的b
    print("""交换后为
    a={},b={}
    """.format(a, b))


    # 方法2 将传入的参数存储在列表中,根据索引来取值互换值 ,不推荐使用
    def swap(a, b):
    list_1 = [a, b]
    a = list_1[1]
    b = list_1[0]
    return ("a={} b={}".format(a, b))


    print(swap(100, 200))

    # 方法3,使用第三个变量,来交换值


    print("~" * 50, "上面为第三题答案", "~" * 50) # 打印空行,区分每题结果
    """
    4.编写如下程序
    尝试函数部分封装:
    输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数
    a.例如:一个65公斤的人,身高是1.62m,则BMI为 : 65 / 1.62 ** 2 = 24.8
    b.根据BMI指数,给与相应提醒
    低于18.5: 过轻 18.5-25: 正常 25-28: 过重 28-32: 肥胖 高于32: 严重肥胖
    """


    # 参数:身高,体重 使用decimal?? round,校验异常输入。比较运算
    def my_bmi(height, weight):
    """
    这是一个计算BMI系数的函数,可以分辨出您的身体状况,使用decimal小数点过多,使用round取前两位小数
    :param height:身高参数,单位为米
    :param weight:体重参数,单位为kg
    :return:
    """
    # 定义一个变量,接收BMI计算公式
    my_health = round((weight / (height ** 2)), 2)
    # 根据题目要求进行判断
    if 0 < my_health < 18.5:
    print("哇塞,您也太苗条了吧,身高为{}米,体重为{}kg,BMI系数是{},太轻了".format(height, weight, my_health))
    elif 18.5 <= my_health <= 25:
    print("您很健康,身高为{}米,体重为{}kg,BMI系数是{},属于正常范围".format(height, weight, my_health))
    elif 25 < my_health < 28:
    print("额,您体重稍微超标了,身高为{}米,体重为{}kg,BMI系数是{},属于过重了".format(height, weight, my_health))
    elif 28 <= my_health <= 32:
    print("额,您体重严格超标了,身高为{}米,体重为{}kg,BMI系数是{},属于肥胖型".format(height, weight, my_health))
    else:
    print("额,您的健康出现了严重问题,身高为{}米,体重为{}kg,BMI系数是{},属于严重肥胖型".format(height, weight, my_health))


    # 传入参数,调用函数
    my_bmi(1.80, 65)
    print("~" * 50, "上面为第四题答案", "~" * 50) # 打印空行,区分每题结果
    """
    """


    # TODO 精简版
    def get_bmi(height, weight):
    return weight / height ** 2


    def get_warning(bmi):
    if bmi < 18.5:
    return "过轻"
    elif 18.5 <= bmi <= 25:
    return "正常"
    elif 25 < bmi < 28:
    return "肥胖"
    else:
    return "过于肥胖"


    def main():
    """函数的相互调用"""
        height = float(input("请输入身高:"))
    weight = float(input("请输入体重:"))

    bmi = get_bmi(height, weight)
    # 接收上一个函数从返回值作为下一个函数的输入值


    print(get_warning(bmi))
     
     
     
     
     
     
     
     
    好文要顶 关注我 收藏该文  
  • 相关阅读:
    创建双向数据绑定 ng-model
    数据绑定指令
    ios操作系统输入完成后,键盘没有弹下去的问题
    anjularjs 指令(1)
    关于苹果手机模态框问题
    手机端页面中去除a标签点击时的默认样式
    ffsfsdsfsfd
    8、排列组合
    7、递归的二分查找
    6、递归
  • 原文地址:https://www.cnblogs.com/little-lucky/p/12989599.html
Copyright © 2011-2022 走看看