《Python核心編程》第二版第160頁第六章練習 續三 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

6-7.
調試。看一下在例6.5中給出的代碼(buggy.py)
(a)研究這段代碼並描述這段代碼想做什麼。在所有的(#)處填寫你的注釋。
(b)這個程式有一個很大的問題,比如輸入6、12、20、30等它會死掉,實際上它不能處理任何的偶數,找出原因。
(c)修正(b)中提出的問題。
例6.5 有bug的程式(buggy.py)
這是一個用於練習6-7的程式,判斷這個程式是幹什麼的,在“#”處添加你的注釋,找出其中的錯誤,並修改之。
num_str = raw_input('Enter a number: ')
num_num = int(num_str)
fac_list = range(1, num_num+1)
print "BEFORE:", 'fac_list'
i = 0

while i < len(fac_list):
    if num_num % fac_list[i] == 0:
        del fac_list[i]
    i = i + 1

print "AFTER":, 'fac_list'
【答案】
這段代碼,目的是:輸入一個自然數,按照這個數建立一個增序的列表,逐個檢查該自然數是否能被列表中元素整除。如果能,就從列表中刪除該列表元素。
修改後的代碼如下:
num_str = raw_input('Enter a number: ')
num_num = int(num_str)
fac_list = range(1, num_num+1)
print "BEFORE:", fac_list

i = 0

while i < len(fac_list):
    if num_num % fac_list[i] == 0: #看輸入的數是否能被列表中某個元素整除。
        del fac_list[i]
    i = i + 1

print "AFTER:", fac_list
【執行結果】
Enter a number: 12
BEFORE: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
AFTER: [2, 4, 5, 7, 8, 9, 10, 11]

6-8.
列表。給出一個整型值,返回代表該值得英文,比如輸入89會返回“eight-nine”。附加題:能夠返回符合英文文法規律的新式,比如輸入89會返回“eighty-nine”。本練習中的值假定在0~1000。
【答案】
代碼如下:
number = int(raw_input('Please input a number between 1 to 1000: ... '))

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

print 'The number you input is: '

if 0 <= number <= 9: print units[number]
elif 10 <= number <= 19: print tens_units[number - 10]
elif 20 <= number <= 99:
    if number % 10 == 0: print tens[number / 10 - 2]
    else: print '%s-%s' % (tens[number / 10 - 2], units[number % 10])
elif 100 <= number <= 999:
    if number % 100 == 0: print '%s hundred' % (units[number / 100])
    elif number % 10 == 0 and (number - 100 * (number / 100)) != 10: print '%s hundred and %s' % (units[number / 100], tens[(number - 100 * (number / 100))/10 - 2])
    elif number % 10 == 0 and (number - 100 * (number / 100)) == 10: print '%s hundred and ten' % (units[number / 100])
    elif number % 10 != 0 and 20 < (number - 100 * (number / 100))<= 99: print '%s hundred and %s-%s' % (units[number / 100], tens[(number - 100 * (number / 100)) / 10 - 2], units[number - 10 * (number / 10)])
    elif number % 10 != 0 and 10 < (number - 100 * (number / 100))< 20: print '%s hundred and %s' % (units[number / 100], tens_units[number - 100 * (number / 100) - 10])
    elif number % 10 != 0 and 0 < (number - 10 * (number / 10)) < 10: print '%s hundred and %s' % (units[number / 100], units[number - 10 * (number / 10)])
else: print 'ten hundred'
【執行結果】
Please input a number between 1 to 1000: ... 309
The number you input is:
three hundred and nine

Please input a number between 1 to 1000: ... 721
The number you input is:
seven hundred and twenty-one

6-9.
轉換。為練習5-13寫一個姊妹函數,接受分鐘數,返回小時數和分鐘數。總時間不變,並且要求小時儘可能大。
【答案】
代碼如下:
minutes = int(raw_input('Please input the minutes: ...'))
hours = minutes / 60
mins = minutes - hours * 60
print "%i:%i" % (hours, mins)

6-10.
字串。寫一個函數,返回一個跟輸入字串相似的字串,要求字串的大小寫反轉,比如,輸入“Mr.Ed”,應該返回“mR.eD”作為輸出。
【答案】
代碼如下:
input = raw_input('Please input a string: ...')
output = ''
for i in input:
    if i == i.upper():
        output = output + i.lower()
    else:
        output = output + i.upper()
print output   

關鍵詞:python核心編程答案 非官方 部落格園

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.