集智社区
资源加载中,请稍后...
集智社区

集智社区

Sic Parvis Magna

求助(未解决)

Python Quiz000 章中 Quiz20、21 疑惑

发表至课程讨论

21题中我试着用以下代码解题,报错信息为TypeError: 'int' object is not iterable 苦思无果后只能拜托大佬们指点下。

def dig_pow(n, p):

    # dig_pow(89, 1) 返回 1,因为 8¹ + 9² = 89,89 / 89 == 1
    # dig_pow(695, 2) 返回 2,因为 6² + 9³ + 5⁴= 1390,1390 / 695 == 2
    # dig_pow(46288, 3) 返回 51 因为 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688,2360688 / 46288 == 51
    # 如果不能整除,返回 -1

    # >>>> show me the code <<<<
    """tmp = 0"""
    for i,j in enumerate(str(n)):
        if sum(int(j)**(p+i)) % n == 0:
            return sum(int(j)**(p+i)) / n
        else:
            return -1

        """tmp += int(j)**(p+i)"""

    """tmp = sum((int(j)**(p+i))for i,j in enumerate(str(n)))
    if tmp % n != 0:
        return -1
    else:
        return tmp / n"""

还有一个是 Quiz 20,虽然题不难,但我看完司徒老师的课后发现老师在这题没有用 % 来格式化输出,就想着自己尝试。结果尝试了几个,输出都无误,但答案却没通过,不知道原因是什么,或许是老师选择.format原因?(省略处的代码答案通过)

def rgb_to_hex(r,g,b):

    # "rgb"_to_hex(255, 255, 255) 应该返回 'FFFFFF'
    # rgb_to_hex(0, 0, 0) 应该返回 '000000'
    # >>>> what color? <<<<
    """rgb_x = ""
    r1 = "%02X" % r
    b1 = "%02X" % b
    g1 = "%02X" % g
    rgb_x = r1 + g1 + b1
    return rgb_x"""
    return "%02X%02X%02X" % (r,b,g)
print(rgb_to_hex(255,255,255)
回复
1
#1
不甜酱4月前

if sum(int(j)(p+i)) % n == 0:这句不能用sum来加。int(j)(p+i)这个得出来的应该就是一个数,不能对一个数求和。列表推导式可以用sum是因为for循环的结果已经生成一个列表了,对列表的元素用sum。而你这个语句只对一个数字进行求和就不行了。

最新回复:收起讨论