请问这段代码为什么执行不了

来源:9-7 Python函数使用可变参数

慕UI0571221

2020-08-31 16:30

def average(*args):
    sum = 0
    if len(args) == 0:
        return 0
    elif isinstance(args, str):
        return "传入变量为文本,无法计算平均值,请重新上传"
    else:
        for item in args:
            sum += item
        avg = sum / len(args)
        return avg


print(average())
print(average("a", "b"))
print(average(1, 21))
print(average(1.5, 3.5, 5, 5))

执行这段代码的时候为什么没有进行这段的校验呢?
elif isinstance(args, str):
        return "传入变量为文本,无法计算平均值,请重新上传"


写回答 关注

4回答

  • weibo_N哦7788_0
    2020-09-01 17:11:53
    已采纳

    你输入  

    print(average("a", "b"))
    它会当作数组类型,而不是字符串,变成一个字符串应该就对了。


  • 禾希禾希
    2021-03-01 17:49:46

    通过循环次数来判断是否有字符,还可以只计算tuple里数字元素的平均值

    def average(*args):

        if len(args) > 0:

            sum = 0

            i = 0

            for item in args:

                if isinstance(item,int) or isinstance(item,float):

                    sum += item

                    i += 1

            if i > 0 :

                avg = sum / i

                return avg

            else:

                print('传参中没有数字型元素')

        else:

            print('传参为空')

        return None


  • 粉条慕慕
    2021-01-17 19:50:20
    elif isinstance(args, str):
            return "传入变量为文本,无法计算平均值,请重新上传"

    这里的args 是tuple类型, for item in args:   中的 item 才是 str 类型。

    for item in args:
        if isinstance(item, str):
            return "传入变量为文本,无法计算平均值,请重新上传"

    在for循环里加入 if 就可以了。

  • 炎武风曌
    2020-09-08 16:34:01

    # -*- coding: UTF-8 -*-

    def average(*args):

        sum = 0

        if len(args) == 0:

            return 0

        else:

            for i in args:

                if isinstance(i,(int,float)):

                    sum += i

                    avg = sum / len(args)

                else:

                    return"传入变量为文本,无法计算平均值,请重新上传"

        return avg            

    我是根据你的这样改的,就OK了

    廖玉文_给力...

    else: return"传入变量为文本,无法计算平均值,请重新上传" break 建议加上break,如在可变参数中发现一个str,立刻跳出for循环。 要不可变参数如果是两个str,那会在输出中出现两次"传入变量为文本,无法计算平均值,请重新上传"。

    2021-01-12 06:16:57

    共 1 条回复 >

Python3 入门教程(新版)

python3入门教程,让你快速入门并能编写简单的Python程序

154153 学习 · 1075 问题

查看课程

相似问题