已有184人关注
inputbox函数存在较多问题
还有0人有此问题
发表在Python图书答疑 2020-02-28
是否精华
版块置顶:

1、分支覆盖不全,比如函数第2个参数输入个4,没有返回

2、函数嵌套层级超过3级

3、函数第3个参数在某些情况下不需要,但是没有给默认值,导致在不需要时也必须输入

4、整个函数的if 和 return 使用不地道,在if 分支中return了,就不需要else的

image.png

2020-02-28 15:32:57编辑
分享到:
精彩评论 1
junho
学分:13 LV2
2020-02-28
沙发
def input_box(input_str, str_rule, str_length=0):
    """
    输入字符串,类型,长度限制,判断输入的字符串是否符合规则,是则返回字符串,否则返回字符串"0"
    :param input_str: 输入的字符串
    :param str_rule: 规则编号,1-数字不限制位数,2-字母限制位数,3-数字限制位数
    :param str_length: 如果限制位数,则需要该参数
    :return:
    """
    instr = input(input_str)
    if len(instr) == 0:
        print("输入为空,请重新输入!")
        return "0"
    if str_rule not in [1, 2, 3]:
        print("输入类别错误,请重新输入!")
        return "0"
    if str_rule == 1:
        if not instr.isdigit():
            print("类型1[数字不限制位数]必须输入数字,请重新输入!")
            return "0"
        if instr == "0":
            print("类型1[数字不限制位数]必须输入数字,且不能为0,请重新输入!")
            return "0"
        return instr
    if str_rule == 2:
        if not instr.isalpha():
            print("类型1[数字不限制位数]必须输入字母,请重新输入!")
            return "0"
        if len(instr) != str_length:
            print("类型2[字母]必须输入字母,字母长度要求{}位,实际输入{}位,请重新输入!".format(str_length, len(instr)))
            return "0"
        return instr
    if str_rule == 3:
        if not instr.isdigit():
            print("类型1[数字制位数]必须输入数字,请重新输入!")
            return "0"
        if len(instr) != str_length:
            print("类型2[数字限制位数]必须输入字母,字母长度要求{}位,实际输入{}位,请重新输入!".format(str_length, len(instr)))
            return "0"
        return instr


首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照