def ex(a,n):
s=0
for i in range(n+1):
x=int(str(a)*i)
s+=x
return s
a=int(input("请输入一个1-9的数:"))
n=int(input("请输入一个数:"))
print(ex(a,n))
这段代码会报错,然后把for i in range(n+1)改成for i in range(1,n+1)就可以正常运行了,这是为啥?两者有啥区别?
range(n+1)运行时是从0开始遍历的,而range(1,n+1)没有遍历0。字符串0的结果是一个空字符串,空字符串转化成整型时会报错,所以int(str(a)0)会报错。所以在遍历时不能把0遍历进去。
具体出错的是这个语句 int(str(a)乘以0),我也不知道为什么会报错,乘以0也不可能出现小数点啊,为什么会报错
for i in range(n+1) 表示从 0 到 n+1,循环会进行 n+2 次
for i in range(1,n+1) 表示从 1 到 n+1,循环会进行 n+1 次
for i in range(n+1) 表示 i 从 0 到 n+1,循环会进行 n+1 次
for i in range(1,n+1) 表示 i 从 1 到 n+1,循环会进行 n 次
range(a,b) 区间包括a,不包括b 即区间为 [a,b)
range(a) 区间的左端点可以省略,默认值为0,即区间为[0,a)