Python課程第一天作業


一、第一題:簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型?

計算機是不能理解高級語言的,更不能直接執行高級語言,它只能直接理解機器語言,所以使用任何高級語言編寫的程序若想被計算機運行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式有兩種:
  1. 編譯

  2. 解釋

由此高級語言也分編譯型語言解釋型語言

 

 

1.編譯型語言

使用專門的編譯器,針對特定的平台,將高級語言源代碼一次性的編譯成可被該平台硬件執行的機器碼,並包裝成該平台所能識別的可執行性程序的格式。

特點

在編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的文件,如exe格式的文件,以后要再運行時,直接使用編譯結果即可,如直接運行exe文件。因為只需編譯一次,以后運行時不需要編譯,所以編譯型語言執行效率高。

總結

1.一次性的編譯成平台相關的機器語言文件,運行時脫離開發環境,運行效率高;
2.與特定平台相關,一般無法移植到其他平台;
3.現有的C、C++、Objective等都屬於編譯型語言。

2.解釋型語言

使用專門的解釋器對源程序逐行解釋成特定平台的機器碼並立即執行。

特點

解釋型語言不需要事先編譯,其直接將源代碼解釋成機器碼並立即執行,所以只要某一平台提供了相應的解釋器即可運行該程序。

總結

1.解釋型語言每次運行都需要將源代碼解釋稱機器碼並執行,效率較低;
2.只要平台提供相應的解釋器,就可以運行源代碼,所以可以方便源程序移植;
3.PHP/Java/JavaScript/Python/Perl/Ruby等屬於解釋型語言。

 二、執行 Python 腳本的兩種方式是什么

運行Python有兩種方式--解析器運行和源文件運行。

1.解析器運行

在命令行輸入python就能啟動解析器,我們安裝下面的方式輸入就馬上能得到打印信息

Windows環境下:

Linux環境下:

2.使用源文件運行

寫一個簡單的Python腳本,並執行

三、Python單行注釋和多行注釋分別用什么?

python單行注釋符號(#)

井號(#)常被用作單行注釋符號,在代碼中使用#時,它右邊的任何數據都會被忽略,當做是注釋。
print 1 #輸出1
#號右邊的內容在執行的時候是不會被輸出的。

批量、多行注釋符號

在python中也會有注釋有很多行的時候,這種情況下就需要批量多行注釋符了。多行注釋是用三單引號'''   '''或三雙引號""" """包含的,二者並沒有什么區別

四、布爾值分別有什么?

一個True一個False。
python中以下類型的布爾值是False,其余為True
1.None
2. False
3.所有的值為零的數
4.""
5.[]
6.()
7.{}

五、聲明變量注意事項有那些?

(1).變量由數字、字母和下划線組成
(2).變量不能以數字開頭
(3).變量不能使用Python關鍵字
(4).變量區分大小寫
     模塊名,包名 :小寫字母, 單詞之間用_分割。
     類名:首字母大寫。
     全局變量: 大寫字母, 單詞之間用_分割。
     普通變量: 小寫字母, 單詞之間用_分割。
     函數: 小寫字母, 單詞之間用_分割。
     實例變量: 以_開頭,其他和普通變量一樣 。
     私有實例變量(外部訪問會報錯): 以__開頭(2個下划線),其他和普通變量一樣 。
     專有變量: __開頭,__結尾,一般為python的自有變量(不要以這種變量命名)。

六、如何查看變量在內存中的地址?

id(變量名)查看

七、寫代碼(實現用戶輸入用戶名和密碼,當用戶名為 seven 或 alex 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重復輸入三次)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
import time
user_lsit=['seven','alex']
passwd='123'
count = 0
while count < 3:
    count += 1
    login_user=input('請輸入您的用戶名:')
    login_passwd=input('請輸入您的密碼:')
    #login_passwd=getpass.getpass('密碼:') #Paycharm下無法使用getpass方法
    if (login_user  in user_lsit) and login_passwd == passwd:
        print('登錄成功')
        break
    else:
        if count == 3:
            print('失敗次數過多,程序退出.....')
            time.sleep(1)
            exit(1)
        else:
            print('登錄失敗,請重新輸入!')

八、寫代碼(使用while循環實現輸出2-3+4-5+6...+100 的和、1-100 內的所有奇數及1-100 內的所有偶數)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#計算指定數字之間的總和,默認為1至100
def calculate_the_sum_of_numbers(init_number=2,max_number=100):
    if judgement_size(init_number,max_number) == 0:
        return 0
    judgement_size(init_number, max_number)
    starting_value=init_number
    sum_of_number=0
    while init_number !=  (max_number + 1):
        sum_of_number=(sum_of_number + init_number)
        init_number += 1
    print('%d 至 %d 的數字之和為:%d' %(starting_value,max_number,sum_of_number))

#打印指定數字之間的奇數和偶數,默認為1至100
def print_odd_even_number(init_number=1,max_number=100):
    if judgement_size(init_number,max_number) == 0:
        return 0
    odd_lsit=[]
    even_lsit=[]
    starting_value = init_number
    while init_number != (max_number + 1):
        if (init_number%2) == 1:
            odd_lsit.append(init_number)
            init_number += 1
        else:
            even_lsit.append(init_number)
            init_number += 1
    print('%d 至 %d 的數字之間的奇數為:  %s' %(starting_value,max_number,odd_lsit))
    print('%d 至 %d 的數字之間的偶數為:  %s' %(starting_value,max_number,even_lsit))

#判斷起始值和結束值得大小
def judgement_size(num1,num2):
    max_num=max(num1,num2)
    if max_num != num2:
        print('最大值必須必起始值大!')
        return 0

calculate_the_sum_of_numbers()
print_odd_even_number()  

 

九、用戶登錄(多用戶、失敗3次被鎖、、支持新建)  

流程圖:

代碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
white_user_set=[]
black_user_set=[]
user_list=[]
white_userDB='white_userDB'
black_userDB='black_userDB'

with open(black_userDB, 'r+') as black_f:
    for black_user  in black_f.readlines():
        black_user = black_user.strip("\n")
        black_user_set.append(black_user)

with open(white_userDB, 'r+') as white_f:
    for file in white_f.readlines():
        file = file.strip("\n")
        user,passwd= file.split(':')
        white_user_set.append({'name':user,'passwd':passwd})
        user_list.append(user)

def user_register():
    count=0
    while True:
        count+=1
        register_name = input('創建用戶名:')
        register_passwd = input('創建密碼:')
        register_passwd1 = input('創建密碼:')
        if register_passwd == register_passwd1:
            if register_name in user_list:
                print('用戶已存在,請重新創建')
            else:
                user_information=register_name+':'+register_passwd
                print(user_information)
                print(type(user_information))
                with open(white_userDB,'a+') as f:
                    f.write('\n')
                    f.write(user_information)
                print('恭喜您,用戶創建成功!!!')
                return 0
        else:
            if count == 3:
                print('失敗次數超過上限,程序退出')
                exit(3)
            print('兩次密碼不一致,請重新創建2')



def user_login():
    Flag = True
    user_failures = 0
    all_failures = 0
    while Flag:
        login_name = input('請輸入用戶名:')
        login_passwd = input('輸入密碼:')
        print(login_name,login_passwd)
        if login_name in black_user_set:
            print('該用戶已被鎖定,請聯系您的管理員!')
            exit(3)
        if login_name in user_list:
            for subscript,line in enumerate(white_user_set):
                if (login_name == line['name']) and (login_passwd == line['passwd']):
                    print('登錄成功')
                    print('正在登錄。請稍后')
                    time.sleep(1)
                    print('')
                    print('='*30)
                    print('歡迎來到 250 世界')
                    print('='*30)
                    Flag = False
                    break
            for subscript,line in enumerate(white_user_set):
                if (login_name == line['name']) and (login_passwd != line['passwd']):
                    user_failures += 1
                    all_failures += 1
                    if (user_failures == 3):
                        print('驗證失敗次數過多,用戶被鎖定')
                        with open(black_userDB,'a+') as f:
                            f.write(login_name+'\n')
                            exit(2)
                    print('用戶名或密碼不正確,登錄失敗,請重新登錄 2 ')
                    break
        else:
            print('用戶名或密碼不正確,登錄失敗,請重新登錄 3 ')
            all_failures += 1
            if all_failures == 6:
                print('失敗次數過多,請確認后再登錄 4')
                exit(1)

def main():
    while True:
        count=0
        print('1  注冊用戶:')
        print('2  登錄系統:')
        user_operation=input('請選擇您的操作:')
        print(type(user_operation))
        if user_operation == '1':
            user_register()
            break
        elif user_operation == '2':
            user_login()
            break
        else:
            count+=1
            if count == 3:
                print('失敗次數過多,請確認后再登錄')
                exit(3)
            print('非法的輸入,請重試')
            
if __name__ == '__main__':
    main()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM