1. 程式人生 > >python筆記:range()的資料型別 & Center()和format()搭配的效果

python筆記:range()的資料型別 & Center()和format()搭配的效果

Range()函式的資料型別

為了得到如下結果:

1. 在把range()用於for in迴圈的時候,遇見一個似乎很奇怪的現象:

貌似range()函式不能引用經過計算後的數值。具體如下:

1.1 問題的&錯誤想法的描述:

以為range()只能引用沒有經過運算的數值。因為當把字串轉換為數值型的時候,可以運算,如第一次的程式碼" b = eval(a)" ;進行運算之後不能執行,如第二次程式碼

第一次程式碼,可以執行:

a = input()
b = eval(a)
for i in range(b):
    c='*'*(1+2*i)
    i +=1
    print(c)

第二次程式碼,不可以執行:

a = input()
b = (int(a)+1)/2
for i in range(b):
    c='*'*(1+2*i)
    i +=1
    print('{:^}'.format(c))

1.2 答案&犯錯的解決:range(int)

range()函式只有一個引數的情況下,必須使用int,即整數型別。

* eval()函式可以將str(字串型)轉為int(整數型),所以第一次可以執行;

* int()得到的是整數型資料,但經過運算後資料型別變為浮點型數值,自然會在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'>
>>> 

2.為了得到等腰三角型,可以把print()函式巢狀center()函式,

想要的結果:

  *  
 *** 
*****

程式碼如下:

a = input()
b = (int(a)+1)/2

for i in range(int(b)):
    c='*'*(1+2*i)
    i +=1
    print('{}'.format(c).center(int(a)))

center函式:‘str'.center()

format函式: 'str'.format()。 

3. 但是不知道怎麼使用“^”來把format的結果居中排列,

原大神指教。