教女朋友學 python——加減數學豎式

2020-10-19 12:00:20

女朋友的程式設計作業,適合零基礎的同學。

題目

在這裡插入圖片描述

思路

運算是簡單的數學豎式,計算並沒有困難,題目考察點在於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))

format 用法

格式化字串的函數 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函數就與第一個程式碼相同了