女朋友的程式設計作業,適合零基礎的同學。
運算是簡單的數學豎式,計算並沒有困難,題目考察點在於python的格式化輸出。
python中的格式化輸出主要使用format方法。
print('請輸入兩個整數:') ## 輸出
a = int(input()) ## 輸入
b = int(input()) ## 輸入
while(1):
print('請輸入兩個整數的運算方式(+或-):') ## 輸出
y = input() ## 輸入
if y=='+':
c = a+b
else:
c = a-b
break
print('{:>10}'.format(a))#固定長度是10
print('{:<}'.format(y),'{:>8}'.format(b))
print('{:->11s}'.format(''))
print('{:>10}'.format(c))
格式化字串的函數 str.format()
,str
是要出的字串,format
函數可以將str
中指定的{}
部分替換成我們指定的內容。
基本使用範例如下(更多使用方式可參考菜鳥教學):
>>>"{} {}".format("hello", "world") # 不設定指定位置,按預設順序
'hello world'
本題中會用到format
函數中的對齊功能:
{:>10d}
表示 右對齊 (預設, 寬度為10,空格補齊)
其中
:
後面接對齊格式
>
表示右對齊
10
表示對齊的長度
d
表示十進位制數位
相同長度的-
補齊
{:->11s}
中符號:後接-表示使用-填充(沒有接其他符號表示用空格補齊),s
表示字串
(更多使用方式可參考菜鳥教學)
上述直接使用format
函數格式化對齊的方式只能設定固定的對齊長度10,就是無論數位是幾位,最終都對齊為左邊開始向右數第十位。如果數位很大超過十位,則會報錯。如果開始就把對齊的固定長度設定很大則表示式很不美觀。
則需要修改對齊方式,使得對齊的長度隨著輸入數位的長度動態調整。
這裡用到了python的另一種格式化方式%
。
對齊需要使用format
中的動態補齊,上面格式化程式碼'{:>10}'
中10
的部分只能是數位,不能加變數,所以考慮在格式化程式碼中套用格式化功能,將'{:>10}'
再次格式化用變數代替10
。
print('請輸入兩個整數:') ## 輸出
a = int(input()) ## 輸入
b = int(input()) ## 輸入
while(1):
print('請輸入兩個整數的運算方式(+或-):') ## 輸出
y = input() ## 輸入
if y=='+':
c = a+b
else:
c = a-b
break
l=max(len(str(a)),len(str(b)))+5#l為我們指定的動態長度,這裡是比最長輸入數位的長度長5個字元
print(('{:>%s}'%(l)).format(a))
print(y+('{:>%s}'%(l-1)).format(b))
print(('{:->%s}'%(l)).format(''))
print(('{:>%s}'%(l)).format(c))
%
用法與format
類似(這裡也可以直接用format代替)
>>>"hello%s"%("world")
'hello world'
當l=10
時,上方程式碼中'{:>%s}'%(l)
相當於'{:>10}
,這時再用format函數就與第一個程式碼相同了