python筆記:range()的資料型別 & Center()和format()搭配的效果
阿新 • • 發佈:2019-02-15
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的結果居中排列,
原大神指教。