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


输入格式

一个小于10的正整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出格式

数列的前 n 项和或“data error!”

这是一个前n项累加的问题,一个循环就可以解决,难点是通项的构建,有这样几种方法:

  1. 后一项为前一项的10倍与下一个数字的加和:

    010+1,110+2,(110+2)10+3,((110+2)10+3)*10+4….

  1. tmp = 0
  2. for i in range(1,10):
  3. tmp = tmp * 10 + i
  4. print(tmp,end=' ')
  5. # 1 12 123 1234 12345 123456 1234567 12345678 123456789 整数


  1. n = int(input())
  2. if n >= 10:
  3. print('data error!')
  4. else:
  5. sum = 0
  6. tmp = 0
  7. for i in range(1,n + 1):
  8. tmp = tmp * 10 + i
  9. sum = sum +tmp
  10. print(sum)
  1. 构造一个字符串 num = ‘123456789’ 通过对其切片获得各项
  1. num = '123456789'
  2. for x in range(1,10):
  3. print(num[:x],end=' ')
  4. # 1 12 123 1234 12345 123456 1234567 12345678 123456789 字符串
  1. n = int(input())
  2. if n >= 10:
  3. print('data error!')
  4. else:
  5. sum = 0
  6. num = '123456789'
  7. for i in range(1,n + 1):
  8. sum = sum +int(num[:i])
  9. print(sum)
  1. 用列表推导式产生一个包含各项数的列表
  1. num = '123456789'
  2. ls = [int(num[:x]) for x in range(1,10) ]
  3. print(ls)
  4. # [1, 12, 123, 1234, 12345, 123456, 1234567, 12345678, 123456789] 整数
  1. n=int(input())
  2. if n >= 10:
  3. print('data error!')
  4. else:
  5. num = '123456789'
  6. print(sum([int(num[:x]) for x in range(1,n + 1) ]))

列表推导式与条件表达式共用

  1. n=int(input())
  2. print('data error!') if n >= 10 else print(sum([int('123456789'[:x]) for x in range(1,n + 1) ]))
  1. n = int(input())
  2. print(sum([ int(''.join(map(str,range(1,i+1)))) for i in range(1,n + 1)])) if n < 10 else print('data error!')