函数使用练习

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2019/9/3 10:42
# @Author : "小多肉"
# @Email : 1021181701@qq.com
# @File : doroo_homework20190902_func.py
# @Software: PyCharm


"""
TODO: 1. 将用户输入的所有数字相乘之后对20取余数.用户输入的数字个数不确定
"""


# 定义函数,用户判断一个字符串是不是数值(包括正数、负数、小数)
def input_isint(str):
if str.replace('.', '', 1).isdigit(): # 判断是否是正数,包括小数
return True
elif str.startswith('-') and str[1:].replace('.', '', 1).isdigit(): # 判断是否是负数,包括小数
return True
else:
return False


def func_calculate(*args):
# 判断用户数输入参数是空,则直接返回0
if args.__len__() == 0:
return 0
else:
cal = 1
for element in args:
cal *= element
return cal%20


num = [] # 存储用户数输入的数值
# 用户输入做运算的数据,输入字母n结束输入,非n则进行运算
while True:
user_input = input(f"请输入第{len(num)+1}个用于做运算的数字(输入字母n结束输入):")
if user_input.lower() == 'n':
break
# 调用函数判断用户输入的是不是数值
elif input_isint(user_input):
num.append(float(user_input))
else:
print("您输入的不是数字,请重新输入! ")
# 调用计算函数计算用户输入的数据
result = func_calculate(*num)
print("您输入的所有数字相乘之后对20取余数后的结果为:%f" % result)


# TODO: 2,编写函数,检查传入列表的长度,如果大于2,那么仅仅保留前两个长度的内容,并将新内容返回
def check_len(*args):
if args.__len__() > 2:
args = args[:2] # 取参数前两个长度的内容
return list(args) # 以列表的形式返回


# 验证函数
li = ['大佬',1,24,567,]
print(check_len(*li)) # 入参传入列表


# TODO: 3, 定义一个函数,传入一个字典和字符串,判断字符串是否为字典中的值,如果字符串不在字典中,则添加到字典中,并返回新的字典
def str_is_in_dict(string, dic):
if string in dic.values(): # 判断传入的字符串是否在字典的值中,如果在就返回Ture
return True
else:
dic.update(string=string) # 字符串没在字典的值中,添加到字典中。key值写死为string
return dic


# 验证函数
s = 'abc'
d = {1:'张三', 2:'李四'}
result = str_is_in_dict(s,d)
print(result)


# TODO: 4, 通过定义一个计算器函数,调用函数传递两个参数,然后提示选择【1】加 【2】减【3】乘 【4】除 操作,选择之后返回对应操作的值。
def calculator(tup, oper): # 计算器函数,第一个参数为tuple类,包含两个操作数。第二个参数为操作符。
a,b = tup # 元组解包
if oper == '+':
return a+b
elif oper == '-':
return a-b
elif oper == '*':
return a*b
else:
return a/b


while True:
first_num = input("请输入第一个操作数:")
second_num = input("请输入第二个操作数:")
# 调用第一题中定义的函数,判断输入的内容是否为数值
if input_isint(first_num) and input_isint(second_num):
# 两个操作数都是数字就转化成浮点型,写入元组
tuple_num = (float(first_num), float(second_num))
break
else:
print("您输入的操作数不是数值!请重新输入 ")
# 定义操作符字典
oper_dict = {'1':'+', '2':'-', '3':'*', '4':'/'}
select = input("请选择【1】加 【2】减【3】乘 【4】除 您的操作:")
# 如果用户输入的选择在字典键值范围内,调用计算器函数进行计算。
if select in oper_dict.keys():
eq = calculator(tuple_num,oper_dict.get(select))
print(eq)
else:
print("请输入的选择不正确!")


"""
5, 一个足球队在寻找年龄在15岁到22岁的女孩做拉拉队员(包括15岁和22岁)加入。
编写一个程序,询问用户的性别和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。
"""


def lalateam(age, sex):
if sex == '女' and 15 <= int(age) <= 22:
print("恭喜您可以加入啦啦队! ")
return True
else:
print("很抱歉,您不符合啦啦队的要求! ")
return False


count = 0 # 统计符合条件的人数
for times in range(10):
user_sex = input(f"请输入第{times+1}个用户的性别:")
user_age = input(f"请输入第{times+1}个用户的年龄:")
# 判断输入的年龄是否是整数,如果是整数调用函数判断是否符合啦啦队要求。符合条件的统计人数。
if user_age.isdigit():
if lalateam(user_age, user_sex):
count += 1
else:
print("很抱歉,您不符合啦啦队的要求! ")
print("符合条件的人数有%d个" % count)
原文地址:https://www.cnblogs.com/momoon/p/11498881.html