【问题标题】:For loop that add 4-digit even numbers [duplicate]For循环添加4位偶数[重复]
【发布时间】:2020-06-09 00:24:58
【问题描述】:

一个 for 循环,将所有 4 位偶数一个接一个地相加,打印每 100 个数字的中间和(即在索引位置 99、199、299,...)及其索引号。到目前为止,这是我的答案:

l = range(1, 1000, 2)
sum1 = 0
for i in range(len(l)):
    sum1 += l[i]
    if i % 100 == 99 and (len(l[i]) == 4):
        print(sum1, i)
print(sum1)

这是我得到的错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-175-6ae4f990101a> in <module>
      4 for i in range(len(l)):
      5     sum1 += l[i]
----> 6     if i % 100 == 99 and (len(l[i]) == 4):
      7         print(sum1, i)
      8 

TypeError: object of type 'int' has no len()

谁能告诉我我做错了什么?任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你认为错误信息是什么意思? len 指容器中的元素个数; int 的更好选择是检查震级。
  • 我只读了回溯。如果你想使用 len 来检查一个 int 的位数,你可以先把它变成一个字符串: len(str(my_int)) 你得到一个错误,因为一个数字没有实际长度,只有它的视觉表现确实如此。
  • @dominik 我走对了吗? len 函数在 for 循环中仅获取 4 位数字是否正确?抱歉,我对 Python 完全陌生。

标签: python python-3.x for-loop


【解决方案1】:

您无法测量整数中的字符数,因为它不是字符串。

使用l[i] &gt;= 1000 and l[i] &lt;= 9999测试是否为4位数。

如果你坚持要检查字符串,那么len(str(l[i]))

【讨论】:

    【解决方案2】:

    基本上,l[i] 是一个整数数组,通过说len(l[i]),您正在测量一个未定义的整数的长度。

    在您的代码中,将len(l[i]) 替换为l[i] &gt;= 1000。或者,如果您必须检查数字的长度,请使用len(str(l[i]))

    我还想提一下,设置一个等于range(1,1000,2) 的变量是不必要的。

    sum1 = 0
    for i in range(0, 1000, 2):
        sum1 += i
        if i % 100 == 99 and (i >= 1000):
            print(sum1, i)
    print(sum1)
    

    【讨论】:

    • 如果这是添加所有 4 位偶数,我如何测试代码?我的答案应该显示索引位置 99、199、299 等。我编辑了我的代码,它现在似乎可以工作,但不完全确定 10000 99 40000 199 90000 299 160000 399 250000 499 250000@PranavaGande
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2015-03-10
    • 2014-02-19
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多