张图南 发表于 2020-7-7 18:54:07

python 第18讲课后习题疑问

原题:编写一个符合以下要求的函数:
   
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
   
我的解答发生了报错:invalid syntax
def M(#chars):
    base = 3
   length = len(chars)
    for i in range(chars):
      result += i
    if chars == 5:
      base = 5
    result *= base
    return(result)

疑问是:为什么length是无效语句?

永恒的蓝色梦想 发表于 2020-7-7 18:54:51

本帖最后由 永恒的蓝色梦想 于 2020-7-7 19:05 编辑

正确代码:def M(*chars):
    base = 3
    length = len(chars)
    result = 0

    for i in range(chars):
      result += i

    if chars == 5:
      base = 5

    result *= base
    return result

Twilight6 发表于 2020-7-7 18:56:57



result 你忘记初始化了,还有参数是 * 不是 #

def M(*chars):
    base = 3
    result = 0
    length = len(chars)
    for i in range(chars):
      result += i
    if chars == 5:
      base = 5
    result *= base
    return(result)

永恒的蓝色梦想 发表于 2020-7-7 19:06:06

Twilight6 发表于 2020-7-7 18:56
result 你忘记初始化了,还有参数是 * 不是 #

WOC,我只注意到了缩进{:10_247:}

Twilight6 发表于 2020-7-7 19:10:23

永恒的蓝色梦想 发表于 2020-7-7 19:06
WOC,我只注意到了缩进

{:10_250:}

张图南 发表于 2020-7-7 21:26:23

def M(*chars):
    base = 3
    result = 0
    length = len(chars)
    for i in chars:
      result += i
    if chars == 5:
      base = 5
    result *= base
    return(result)
这是测试过后可用的程序,len()是从1开始数的,所以得到元组最后一个数据位置要length-1。
页: [1]
查看完整版本: python 第18讲课后习题疑问