零基礎入門學習python_015_筆記及作業_字串_格式化

字串的格式化:
符 號
描述
%c
格式化字符及其ASCII
%s
格式化字符串
%d
格式化整數
%u
格式化無符號整型
%o
格式化無符號八進制數
%x
格式化無符號十六進制數
%X
格式化無符號十六進制數(大寫)
%f
格式化浮點數字,可指定小數點後的精度
%e
用科學計數法格式化浮點數
%E
作用同%e,用科學計數法格式化浮點數
%g
%f%e的簡寫
%G
%f%E的簡寫
%p
用十六進制數格式化變量的地址


輔助指令
描述
*
定義寬度或者小數點精度
-
用做左對齊
+
在正數前面顯示加號( + )
<sp>
在正數前面顯示空格
#
在八進位數前面顯示零('0'),在十六進位前面顯示'0x'或者'0X'(取決於用的是'x'還是'X')
0
顯示的數位前面填充'0'而不是默認的空格
%
'%%'輸出一個單一的'%'
(var)
映射變數(字典參數)
m.n.
是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

作業:編寫一個進制轉換器

==============================以下為程式碼==============================

q = True
while q:
    num = input('請輸入一個整數(輸入Q結束程式):')
    if num != 'Q':
        num = int(num)
        print('十進位 -> 十六進位 : %d -> 0x%x' % (num, num))
        print('十進位 -> 八進制 : %d -> 0o%o' % (num, num))
        print('十進位 -> 二進位 : %d -> ' % num, bin(num))
    else:
        q = False

========================================================================

上面是甲魚版解答。
理論上課後作業要用課程內容寫,
但是我自己研究過後,
發現python有提供更方便的內建函數幫助我們進行進制轉換,
加上我想把程式寫的更完整一點,
所以決定用自己的寫法寫。

==============================以下為程式碼==============================

print('--------------------進制轉換計算機--------------------')

print('''1. 2進制 計算
2. 8進制 計算
3. 10進制 計算
4. 16進制 計算
5. 終止程式''')

while True:
    print('')
    cal = input('您選擇的計算機是:') 
    if int(cal) == 1:
        while True:
            num = input('請輸入 2進制 的數字:')
            if num.isdigit() == True:
                if num.find('2') and num.find('3') and num.find('4') and num.find('5') and num.find('6') and num.find('7') and num.find('8') and num.find('9') == -1:
                    temp = int(num,2)
                    octal = oct(temp)
                    octal = octal[2:]
                    print('2進制的 '+' '+ num + ' 等於')
                    print('8進制的 '+ octal)
                    print('10進制的 '+ str(temp))
                    hexadecimal = hex(temp)
                    hexadecimal = hexadecimal[2:]
                    print('16進制的 '+ hexadecimal)

                    temp = input('''是否繼續使用 2進制計算機?
1. 是
2. 否
請輸入您的選擇:''')
                    if int(temp) == 1:
                        continue
                    elif int(temp) == 2:
                        break
                    else:
                        print('輸入錯誤,強制離開 2進制計算機')
                        break
                else:
                    print('這不是 2進位 的數字,請重新輸入。')
                    continue
            else:
                print('這不是 2進位 的數字,請重新輸入。')
                continue
    elif int(cal) == 2:
        while True:
            num = input('請輸入 8進制 的數字:')
            if num.isdigit() == True:
                if num.find('8') and num.find('9') == -1:
                    temp = int(num,8)
                    binary = bin(temp)
                    binary = binary[2:]
                    print('8進制的 '+' '+ num + ' 等於')
                    print('2進制的 '+ binary)
                    print('10進制的 '+ str(temp))
                    hexadecimal = hex(temp)
                    hexadecimal = hexadecimal[2:]
                    print('16進制的 '+ hexadecimal)

                    temp = input('''是否繼續使用 8進制計算機?
1. 是
2. 否
請輸入您的選擇:''')
                    if int(temp) == 1:
                        continue
                    elif int(temp) == 2:
                        break
                    else:
                        print('輸入錯誤,強制離開 8進制計算機')
                        break
                else:
                    print('這不是 8進位 的數字,請重新輸入。')
                    continue
            else:
                print('這不是 8進位 的數字,請重新輸入。')
                continue
    elif int(cal) == 3:
        while True:
            num = input('請輸入 10進制 的數字:')
            if num.isdigit() == True:
                binary = bin(int(num))
                binary = binary[2:]
                print('10進制的 '+' '+ num + ' 等於')
                print('2進制的 '+ binary)
                octal = oct(int(num))
                octal = octal[2:]
                print('8進制的 '+ octal)
                hexadecimal = hex(int(num))
                hexadecimal = hexadecimal[2:]
                print('16進制的 '+ hexadecimal)

                temp = input('''是否繼續使用 10進制計算機?
1. 是
2. 否
請輸入您的選擇:''')
                if int(temp) == 1:
                    continue
                elif int(temp) == 2:
                    break
                else:
                    print('輸入錯誤,強制離開 10進制計算機')
                    break
            else:
                print('這不是 10進位 的數字,請重新輸入。')
                continue
    elif int(cal) == 4:
        print(cal)
    elif int(cal) == 5:
        print('歡迎再度使用,謝謝!')
        break
    else:
        print('')
        print('輸入錯誤,請重新選擇計算機。')
        continue

========================================================================

留言

這個網誌中的熱門文章

簡易版複利計算機

零基礎入門學習python_003筆記及作業_字串與轉譯

哈佛大學計算機通識課程:CS50