1. 程式人生 > >[Python]小甲魚Python視頻第34課(with else)課後題及參考解答

[Python]小甲魚Python視頻第34課(with else)課後題及參考解答

bre 不同 兩個 如果 刪除 eat 統計 解答 小甲魚

# -*- coding: utf-8 -*-
"""
Created on Sun Feb 24 13:36:33 2019

@author: fengs
"""

"""
0. 在 Python 中,else 語句能跟哪些語句進行搭配?
    if
    while
    with
    except
"""

"""
1. 請問以下例子中,循環中的 break 語句會跳過 else 語句嗎?
def showMaxFactor(num):
    count = num // 2
    while count > 1:
        if num % count == 0:
            print(‘%d最大的約數是%d‘ % (num, count))
            break
        count -= 1
    else:
        print(‘%d是素數!‘ % num)

num = int(input(‘請輸入一個數:‘))
showMaxFactor(num)

    會跳過

"""

"""
2. 請目測以下代碼會打印什麽內容?
try:
        print(‘ABC‘)
except:
        print(‘DEF‘)
else:
        print(‘GHI‘)
finally:
        print(‘JKL‘)

ABC
GHI
JKL
"""


"""
3. 使用什麽語句可以使你不比再擔心文件打開後卻忘了關閉的尷尬?
    
    with open as f:
        ....
        #f.close(); #不要寫,with調用完成時會清理當前對象
        
    
"""


"""
4. 使用 with 語句固然方便,但如果出現異常的話,文件還會自動正常關閉嗎?
可以,無論如何都會清理當前對象,文件還是會自動關閉
"""


"""
5. 你可以換一種形式寫出下邊的偽代碼嗎?
with A() as a:
    with B() as b:
        suite

方法1:
a = A()
if ‘a‘ in locals():
    b = B()
    if ‘b‘ in locals():
        suite
方法2:with 語句處理多個項目的時候,可以用逗號隔開寫成一條語句
with A() as , B() as b:
    suite
    

"""


"""
動動手:
0. 使用 with 語句改寫以下代碼,讓 Python 去關心文件的打開與關閉吧。
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 統計行數
    differ = [] # 統計不一樣的數量

    for line1 in f1:
        line2 = f2.readline()
        count += 1
        if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input(‘請輸入需要比較的頭一個文件名:‘)
file2 = input(‘請輸入需要比較的另一個文件名:‘)

differ = file_compare(file1, file2)

if len(differ) == 0:
    print(‘兩個文件完全一樣!‘)
else:
    print(‘兩個文件共有【%d】處不同:‘ % len(differ))
    for each in differ:
        print(‘第 %d 行不一樣‘ % each)

"""
"""
def file_compare(file1, file2):
    count = 0 # 統計行數
    differ = [] # 統計不一樣的數量
    with open(file1) as f1, open(file2) as f2:
        for line1 in f1:
            line2 = f2.readline()
            count += 1
            if line1 != line2:
                differ.append(count)
    return differ

file1 = input(‘請輸入需要比較的頭一個文件名:‘)
file2 = input(‘請輸入需要比較的另一個文件名:‘)

differ = file_compare(file1, file2)

if len(differ) == 0:
    print(‘兩個文件完全一樣!‘)
else:
    print(‘兩個文件共有【%d】處不同:‘ % len(differ))
    for each in differ:
        print(‘第 %d 行不一樣‘ % each)
        
"""        
"""
1. 你可以利用異常的原理,修改下面的代碼使得更高效率的實現嗎?
print(‘|--- 歡迎進入通訊錄程序 ---|‘)
print(‘|--- 1:查詢聯系人資料  ---|‘)
print(‘|--- 2:插入新的聯系人  ---|‘)
print(‘|--- 3:刪除已有聯系人  ---|‘)
print(‘|--- 4:退出通訊錄程序  ---|‘)

contacts = dict()

while 1:
    instr = int(input(‘\n請輸入相關的指令代碼:‘))
    
    if instr == 1:
        name = input(‘請輸入聯系人姓名:‘)
        if name in contacts:
            print(name + ‘ : ‘ + contacts[name])
        else:
            print(‘您輸入的姓名不再通訊錄中!‘)

    if instr == 2:
        name = input(‘請輸入聯系人姓名:‘)
        if name in contacts:
            print(‘您輸入的姓名在通訊錄中已存在 -->> ‘, end=‘‘)
            print(name + ‘ : ‘ + contacts[name])
            if input(‘是否修改用戶資料(YES/NO):‘) == ‘YES‘:
                contacts[name] = input(‘請輸入用戶聯系電話:‘)
        else:
            contacts[name] = input(‘請輸入用戶聯系電話:‘)

    if instr == 3:
        name = input(‘請輸入聯系人姓名:‘)
        if name in contacts:
            del(contacts[name])         # 也可以使用dict.pop()
        else:
            print(‘您輸入的聯系人不存在。‘)
            
    if instr == 4:
        break

print(‘|--- 感謝使用通訊錄程序 ---|‘)

"""

print(‘|--- 歡迎進入通訊錄程序 ---|‘)
print(‘|--- 1:查詢聯系人資料  ---|‘)
print(‘|--- 2:插入新的聯系人  ---|‘)
print(‘|--- 3:刪除已有聯系人  ---|‘)
print(‘|--- 4:退出通訊錄程序  ---|‘)

contacts = dict()
while True:
    instr = int(input(‘\n請輸入相關的指令代碼:‘))
    if instr == 1:
        name = input(‘請輸入聯系人姓名:‘)
        #if name in contacts:
        try:
            print(name + ‘ : ‘ + contacts[name])
        except(KeyError):
        #else:
            print(‘您輸入的姓名不再通訊錄中!‘)
    if instr == 2:
        name = input(‘請輸入聯系人姓名:‘)
        #if name in contacts:
        try:
            print(‘您輸入的姓名在通訊錄中已存在 -->> ‘, end=‘‘)
            print(name + ‘ : ‘ + contacts[name])
            if input(‘是否修改用戶資料(YES/NO):‘) == ‘YES‘:
                contacts[name] = input(‘請輸入用戶聯系電話:‘)
        except(KeyError):
        #else:
            contacts[name] = input(‘請輸入用戶聯系電話:‘)
    if instr == 3:
        name = input(‘請輸入聯系人姓名:‘)
        #if name in contacts:
        try:
            del(contacts[name])         # 也可以使用dict.pop()
        #else:
        except(KeyError):
            print(‘您輸入的聯系人不存在。‘)
    if instr == 4:
        break

print(‘|--- 感謝使用通訊錄程序 ---|‘)

  

[Python]小甲魚Python視頻第34課(with else)課後題及參考解答