2021年3月26日 星期五

Python 測驗題(一)

第一題

請撰寫一程式,輸入四個分別含有小數1到4位的浮點數,然後將這四個浮點數以欄寬為7、每列印兩個的方式,先列印向右靠齊,再列印向左靠齊,左右皆以直線|作為邊界。提示:輸出浮點數到小數點後第二位。

這題有點煩,格式需要轉來轉去,不熟悉還真的搞很久
程式如下

val_floatA=float(input("請輸入一個浮點數 :"))
val_floatB=float(input("請輸入一個浮點數 :"))
val_floatC=float(input("請輸入一個浮點數 :"))
val_floatD=float(input("請輸入一個浮點數 :"))

val_floatA='%.2f' % val_floatA
val_floatB='%.2f' % val_floatB
val_floatC='%.2f' % val_floatC
val_floatD='%.2f' % val_floatD

val_A=str(val_floatA)
val_B=str(val_floatB)
val_C=str(val_floatC)
val_D=str(val_floatD)

print("|" , val_A.rjust(7)+val_B.rjust(7),"|")
print("|" , val_C.rjust(7)+val_D.rjust(7),"|")

print("|" , val_A.ljust(7)+val_B.ljust(7),"|")
print("|" , val_C.ljust(7)+val_D.ljust(7),"|")

輸出結果

請輸入一個浮點數 :23.12
請輸入一個浮點數 :395.3
請輸入一個浮點數 :100.4617
請輸入一個浮點數 :564.329
|   23.12 395.30 |
|  100.46 564.33 |
| 23.12  395.30  |
| 100.46 564.33  |

更正,第一題下列的寫法,應該比較正確,不用轉來轉去

val_floatA=float(input("請輸入一個浮點數 :"))
val_floatB=float(input("請輸入一個浮點數 :"))
val_floatC=float(input("請輸入一個浮點數 :"))
val_floatD=float(input("請輸入一個浮點數 :"))

print("|{:>7.2f}{:>7.2f}|".format(val_floatA,val_floatB))
print("|{:>7.2f}{:>7.2f}|".format(val_floatC,val_floatD))

print("|{:<7.2f}{:<7.2f}|".format(val_floatA,val_floatB))
print("|{:<7.2f}{:<7.2f}|".format(val_floatC,val_floatD))

輸出結果

請輸入一個浮點數 :23.12
請輸入一個浮點數 :395.3
請輸入一個浮點數 :100.4617
請輸入一個浮點數 :564.329
|  23.12 395.30|
| 100.46 564.33|
|23.12  395.30 |
|100.46 564.33 |


第二題

請使用選擇敘述撰寫一程式,讓使用者輸入一個正整數,然後判斷它是3或5的倍數,若此數值同時為3與5的倍數,顯示【x is a multiple of 3 and 5.】;如此數值皆不屬於3或5的倍數,顯示【x is not a multiple of 3 or 5.】,將使用者輸入的數值代入x。

這題算簡單,就用if 來判別即可,另外多加一個判斷式

val=int(input("請輸入一個正整數 :"))

if (val%3) ==0 and (val%5) ==0:
    print(val , "is a multiple of 3 and 5.")
elif (val%5) ==0 :
    print(val , "is a multiple of 5.")
elif (val%3) ==0 :
    print(val , "is a multiple of 3.")
else:
    print("不是3 & 5 的倍數")

輸出結果

請輸入一個正整數 :15
15 is a multiple of 3 and 5.
請輸入一個正整數 :9
9 is a multiple of 3.
請輸入一個正整數 :31
不是3 & 5 的倍數

第三題

請使用迴圈敘述撰寫一程式,讓使用者輸入兩個正整數a、b(a < b),利用迴圈計算從a開始的偶數連加到b的總和。例如:輸入a=1、b=100,則輸出結果為2550(2 + 4 + ... + 100 = 2550)。

這題要小心,因為a 有可能一開始就是偶數或是奇數,必須要先判斷出來

程式如下

a,b=map(int,input("請輸入兩個正整數:").split())
sum=0
if a%2 ==0 :
    for x in range(a,b+1,2):
        sum=sum+x
    print (sum)
else:
    for x in range(a+1,b+1,2):
        sum=sum+x
    print (sum)   

a,b=map(int,input("請輸入兩個正整數:").split())

這行表示一次輸入兩個變數的值,用空白鍵分隔
這還少了一個判斷,就是 a , b 誰大誰小,就先定義第一個數字要比第二個數字小 (a < b )

輸出結果

請輸入兩個正整數:14 1144
327714

請輸入兩個正整數:3 11
28


沒有留言: