用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和,当输入大于或等于10时,输出“data error!”‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    一个小于10的正整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    数列的前 n 项和或“data error!”

    解析

    1. 有一个整数输入
    2. 求和问题,需要有一个初值为0的空容器
    3. 后面一项是前面一项乘10加当前数,例如010+1,110+2,12*10+3…
    4. 学了字符串后,可用字符串的切片获取:

      1. num = '123456789'
      2. for x in range(1,10):
      3. n = num[:x]
      4. print(n) # 此时n为字符串,放在这里输出是给你们演示每次获得的字符串是什么,不是让你们照着抄!!!!
      5. 1
      6. 12
      7. 123
      8. 1234
      9. 12345
      10. 123456
      11. 1234567
      12. 12345678
      13. 123456789
    5. 输入大于或等于10时结果不同单独处理

    6. sum()可对多个对象求和,也可以对一个对象中的多个元素求和
    7. 学完列表后,可以用列表推导式完成

      1. print(sum(map(int, ['123456789'[:x] for x in range(1, 10)])))

      常见问题

    8. 输出语句缺少print()

    image.png

    1. n=int(input())
    2. if n<=9:
    3. a=0
    4. b=0
    5. for i in range(1,n+1):
    6. a=a*10+i
    7. b=b+a
    8. print(b)
    9. else:
    10. ("data error!") # 输出语句缺少print()
    1. sum()参数不能是一个整数,可以是多个整数,或是可迭代对象 ```python n=int(input()) H=1 if n<10: for i in range(n+1):
      1. H=i*10+H
      print(sum(H)) # TypeError: ‘int’ object is not iterable

    if n>=10: print(“data error!”)

    1. ```python
    2. a = int(input())
    3. if a in range(1,10):
    4. print(sum(a)) # TypeError: 'int' object is not iterable
    5. else:
    6. print('data error')
    1. n = int(input())
    2. if n < 10:
    3. s = '123456789'
    4. sum = 0
    5. for x in range(1,10):
    6. print(sum(map(int,['123456789'[:x]for x in range(1,10)])))
    7. else:
    8. print('date error!')
    1. 输出字符串与题目不符

      n=abs(int(input()))
      if n<10:
       s='123456789'
       a=0
       for i in range(n):
           a=a+int(s[:i+1])
       print(a)
      elif n>=10:
       print('“data error!”')  # 输出 “data error!”,多一层引号
      
    2. 计算公式错

      n=int(input())
      n>0
      s=0
      if n<10:
       for i in range(1,n+1):
           s=s+s*10+i  # 计算公式错
       print(s)
      if n>=10:
           print('data error!')
      
      n = int(input())
      s = 0
      if n >= 10:
       print('data error')
      else:
       for i in range(n):
           m = s * 10 + i + 1  # 公式错
           s = s + m
       print(s)
      
      n = int(input())
      if 0 < n < 10:
       my_sum = 0
       for i in range(1, n):
           my_sum = 1*(10 ** (n-1)) + 2*(10 ** (n-2)) + my_sum  # 公式错
           print(my_sum)  # 输出位置错
      if n >= 10:
       print("data error!")
      
    3. 输出位置错,循环中输出会输出很多个数

      num = '123456789'
      for x in range(1,10):
       n = num[:x]
       print(n)  # 此时会输出10个数,且缺少求和
      
      n = int(input())
      if 0 < n < 10:
       my_sum = 0
       for i in range(1, n):
           my_sum = 1*(10 ** (n-1)) + 2*(10 ** (n-2)) + my_sum  # 公式错
           print(my_sum)  # 输出位置错
      if n >= 10:
       print("data error!")
      
      n=int(input())
      if n>=10:
        print('data error!')
      s='123456789'
      sum=0
      for i in range(n):
       sum=sum+int(s[:i+1])
       print(sum)  # 循环中输出会输出很多个
      
    4. 格式错误,不缩进的行对齐,同一层次的缩进对齐

    image.png

     n=int(input())  # 未顶格
     if n>=10:       # 未顶格
        print('data error!')
    s='123456789'
    sum=0  # 不建议用sum做变量名
    for i in range(n):
        sum=sum+int(s[:i+1])
        print(sum) # 不应该在循环里输出