用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和,当输入大于或等于10时,输出“data error!”
输入格式
一个小于10的正整数
输出格式
数列的前 n 项和或“data error!”
解析
- 有一个整数输入
- 求和问题,需要有一个初值为0的空容器
- 后面一项是前面一项乘10加当前数,例如010+1,110+2,12*10+3…
学了字符串后,可用字符串的切片获取:
num = '123456789'
for x in range(1,10):
n = num[:x]
print(n) # 此时n为字符串,放在这里输出是给你们演示每次获得的字符串是什么,不是让你们照着抄!!!!
1
12
123
1234
12345
123456
1234567
12345678
123456789
输入大于或等于10时结果不同单独处理
- sum()可对多个对象求和,也可以对一个对象中的多个元素求和
学完列表后,可以用列表推导式完成
print(sum(map(int, ['123456789'[:x] for x in range(1, 10)])))
常见问题
输出语句缺少print()
n=int(input())
if n<=9:
a=0
b=0
for i in range(1,n+1):
a=a*10+i
b=b+a
print(b)
else:
("data error!") # 输出语句缺少print()
- sum()参数不能是一个整数,可以是多个整数,或是可迭代对象
```python
n=int(input())
H=1
if n<10:
for i in range(n+1):
print(sum(H)) # TypeError: ‘int’ object is not iterableH=i*10+H
if n>=10: print(“data error!”)
```python
a = int(input())
if a in range(1,10):
print(sum(a)) # TypeError: 'int' object is not iterable
else:
print('data error')
n = int(input())
if n < 10:
s = '123456789'
sum = 0
for x in range(1,10):
print(sum(map(int,['123456789'[:x]for x in range(1,10)])))
else:
print('date error!')
输出字符串与题目不符
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!”,多一层引号
计算公式错
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!")
输出位置错,循环中输出会输出很多个数
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) # 循环中输出会输出很多个
格式错误,不缩进的行对齐,同一层次的缩进对齐
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) # 不应该在循环里输出