Range()函数的数据类型
运行这个代码,range()函数这里出错
a = input()
b = (int(a)+1)/2
for i in range(b):
c='*'*(1+2*i)
i +=1
print('{}'.format(c).center(int(a)))
分析:range()函数只有一个参数的情况下,必须使用int、即整数类型。
- eval()函数的话,可以将str转为int,所以range()可以运行;
- int()得到的是int,经过运算后数据类型变为float,所以range()不能运行。
验证如下:
>>> a = input() # 随便输入一个整数
>>> b = (int(a)+1)/2
>>> d = int(b)
>>>
>>> print(type(a))
>>> print(type(b))
>>> print(type(d))
<class 'str'>
<class 'float'>
<class 'int'>
>>>
正确的应该是把 range()修改为:
a = input()
b = (int(a)+1)/2
for i in range(int(b)):
- 但是不知道怎么使用“^”来替换format里的center()的结果居中排列,
- 待大神指教。