Python核心程式設計第2版第六章習題答案

蔡藝君小朋友發表於2018-09-05

6-2 字串識別符號。修改例 6-1 的 idcheck.py 指令碼,使之可以檢測長度為一的識別符號,並且可以識別Python關鍵字,對後一個要求,你可以使用keyword模組(特別是 keyword.kelist)來輔助

import string
import keyword
import sys

Startwith=string.ascii_letters+'_'
Othersymbol=string.digits


def CheckID(s):
    if s[0] in Startwith:
        if len(s)==1:
            print("The ID is valid")
            if s in keyword.kwlist:
                print ("And the ID is a key word")
        else:
            for j in s[1:]:
                if j not in Othersymbol+Startwith:
                    print ("The other symbol is invalid.")
#                    sys.exit()
                    break
            print ("The ID is valid.")
            if s in keyword.kwlist:
                print ("And the ID is a key word")
    else:
        print ("The startwith is invalid.")


if __name__=="__main__":
    sid=input("Enter a string:")
    CheckID(sid)

6-3 排序
(a) 輸入一串數字,從大到小排列之。
(b) 跟 a 一樣,不過要用字典序從大到小排列之.。
(a)

num1 = []
num = input("輸入一串數字:") 
for i in num:
    num1.append(i) 
    #  num1.append(int(i))

num1.sort()  #若刪掉該行則是以cghd輸入,dhgc輸出
num1.reverse() 
print (num1)

6-8 列表, 給出一個整型值,返回代表該值的英文, 比如輸入89返回”eight-nine”. 附件題: 能夠返回符合英文語法規則的形式, 比如輸入”89” 返回”eighty-nine”. 本練習中的值限定在0~1000.

#coding=utf-8
units = [
'zero','one','two','three','four','five','six','seven','eight','nine','ten',
'eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen',
'eighteen','nineteen'
]
tens = ['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']


while True:
    myInput = input("Enter the num -->(input 'quit' to quit):")       #字串輸入
    if myInput == 'quit':
        break
    myInput_num = int(myInput)                      #將字串輸入轉整型
    Input_num = []                                  #列表

    for i in myInput:                   #將輸入的字串轉化為列表
        Input_num.append(int(i))

    if myInput_num < 20:                  #20以下的英文輸出
        print (units[myInput_num])

    elif myInput_num < 100:             #20-100的輸出
        if Input_num[1] == 0:           # 如50,第2位為0
            print (tens[Input_num[0] - 2])
        else:                           # 如53
            print (tens[Input_num[0] - 2] + '-' + units[Input_num[1]])

    elif myInput_num < 1000:     #100-1000
        if (Input_num[2] == 0 and Input_num[1] == 0):     #第二、三位等於0(注:此語句需要放在最前,如果後兩句先執行的話,會包含這種情況,最後一位會輸出zero)
            print (units[Input_num[0]] + ' ' + 'hundred')
        elif Input_num[1] == 0:       #第二位等於0
            print (units[Input_num[0]] + ' ' + 'hundred' + ' '+ 'and' + ' ' + units[Input_num[2]])
        elif Input_num[2] == 0:     #第三位等於0
            print (units[Input_num[0]] + ' ' + 'hundred' + ' '+ 'and' + ' ' + tens[Input_num[1] - 2] )
        else:                       #每一位都不等於0
            print (units[Input_num[0]] + ' ' + 'hundred' + ' '+ 'and' + ' ' + tens[Input_num[1] - 2] + '-' + units[Input_num[2]])

Enter the num -->(input 'quit' to quit):78
seventy-eight

Enter the num -->(input 'quit' to quit):5
five

Enter the num -->(input 'quit' to quit):2233

Enter the num -->(input 'quit' to quit):

6-10 字串。寫一個函式,返回一個跟輸入字串相似的字串,要求字串的大小寫翻轉。比如,輸入“Mr.Ed”,應該返回“mR.eD”作為輸出。

def myChang(myString): 
    return myString.swapcase() 

myString = input("Enter a String: ") 
print (myChang(myString))
或
str = input()     
print (str.swapcase())

相關文章