Python学习八 —— 函数上 课后作业

  1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
    • 控制姓名长度为6-20
    • 电话号码长度11
    • 性别只能允许输入男或女
    • 每一样信息不允许为空
# 1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
# # • 控制姓名长度为6-20
# # • 电话号码长度11
# # • 性别只能允许输入男或女
# # • 每一样信息不允许为空

def fn_name(name):  #姓名长度为6-20,且不能为空
    if len(name) == 0:
        print('不允许输入为空的姓名!')
    elif len(name) < 6 or len(name) > 20:
        print('姓名长度为6-20!请重新输入!')
    else:
        return name

def fn_number(number):  # 电话号码长度11,且不能为空
    if len(number) == 0:
        print('电话号码不能为空!请重新输入!')
    elif number.isdigit() == False:
        print('电话号码只能为数字!请重新输入!')
    elif len(number) != 11:
        print('电话号码长度为11!请重新输入!')
    else:
        return number

def fn_gender(gender):  # 性别只能输入男或者女,不能为空
    if len(gender) == 0:
        print('输入性别不能为空!请重新输入!')
    elif gender == '男' or gender == '女':
        return gender
    else:
        print('性别只能输入男或者女!输入有误!请重新输入!')

def fn_print(name, number, gender):     # 打印名片
    card = {'name': name,
            'number': number,
            'gender': gender
            }
    print('—' * 50)
    print('输入的姓名为:%s' % card['name'])
    print('输入的电话号码为:%s' % card['number'])
    print('输入的性别为:%s' % card['gender'])
    print('—' * 50)

while True:
    while True:
        name = fn_name(input('输入姓名:'))
        if name == None:
            continue
        else:
            break
    while True:
        number = fn_number(input('输入电话号码:'))
        if number == None:
            continue
        else:
            break
    while True:
        gender = fn_gender(input('输入性别:'))
        if gender == None:
            continue
        else:
            break
    fn_print(name, number, gender)
    break

打印结果为:

输入姓名:路飞
姓名长度为6-20!请重新输入!
输入姓名:
不允许输入为空的姓名!
输入姓名:海贼王.D。路飞
输入电话号码:一89139零0000
电话号码只能为数字!请重新输入!
输入电话号码:
电话号码不能为空!请重新输入!
输入电话号码:18913900000
输入性别:nan
性别只能输入男或者女!输入有误!请重新输入!
输入性别:
输入性别不能为空!请重新输入!
输入性别:男
——————————————————————————————————————————————————
输入的姓名为:海贼王.D。路飞
输入的电话号码为:18913900000
输入的性别为:男
——————————————————————————————————————————————————

  1. 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
# 定义 fbnq函数,实现功能为斐波那契数列,起始两项均为1,此后的项分别为前两项之和
def fbnq(f_s, f_f):
    list_local = [f_f, f_s]
    len_fbnq = len(list_local)
    while len_fbnq < 20:        # 题目要求20个数值,因此计数到20结束
        # 将列表中倒数两个数值相加,然后再添加进原列表末尾
        list_local.append(list_local[len_fbnq-2]+list_local[len_fbnq-1])
        len_fbnq = len(list_local)      # 通过增加后的列表长度来做while循环计数
    return list_local       # 返回结果列表
# 起始数值为两个1
a1 = 1
a2 = 1
print('打印出这个费雷罗列表', fbnq(a1, a2))

打印结果为:

打印出这个费雷罗列表 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]

  1. 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
def fn_count(start, stop):
    sumall = 0
    for i in range(start+1, stop):
        sumall += i
    return sumall


start = int(input('请输入开始的整数数字:'))
stop = int(input('请输入结束的整数数字:'))
print(fn_count(start, stop))
print('%d开始到%d结束所有整数的和为:%d' %(start, stop, fn_count(start, stop)))

打印结果为:

请输入开始的整数数字:1
请输入结束的整数数字:100
4949
1开始到100结束所有整数的和为:4949

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值