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()的結果居中排列,
- 待大神指教。