軟體工程師課程輔導

MaximeSHE發表於2024-10-05

Day1

環境搭建

  1. 下載vscode

    下載連結:https://pan.baidu.com/s/1Oo1TIrAKmlEuEfdn9EXgLQ?pwd=nkt9

  2. 配置vscode的python開發環境

    教程:https://www.runoob.com/python3/python-vscode-setup.html

  3. 安裝Pycharm

    下載教程:https://blog.csdn.net/qq_44809707/article/details/122501118

  4. Anaconda下載安裝 教程

    Anaconda下載地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda-1.5.0-Windows-x86_64.exe

  5. 安裝Python 3.11+

    安裝教程:https://blog.csdn.net/lugzk/article/details/131138920

    Python 3.11.6:https://www.python.org/ftp/python/3.11.6/python-3.11.6-amd64.exe

    安裝Python 3.12也是可以的

    記住Python安裝的路徑

  6. 在Pycharm中配置Python環境

    img

    img

    img

  7. 下載專案

    專案地址:https://gitee.com/scy157609962/chatgpt-gui

  8. 配置pip為國內映象源

    Windows下,建立資料夾C:\User\xxx\pip,並在其中建立檔案pip.ini

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host = pypi.tuna.tsinghua.edu.cn
    
  9. 下載所需的依賴

    進入命令列終端:按 win + R,輸入 cmd

    img

    pip install --upgrade revChatGPT

    pip install PyQt5

  10. 建立新的Python環境

進入命令列終端

conda create -n chatgpt python==3.11
conda activate chatgpt

注意

  • 如果 1、2安裝vscode出現問題,可以跳過安裝 3 Pycharm

  • 如果 4 Anaconda安裝失敗可以跳過安裝 5 Python 3.11+ 和 6 Pycharm中配置環境

  • 上面的Python環境安裝成功後來到 7 配置 pip.ini

  • 最後就是在命令列終端下載第三方庫函式

Python語法學習

python語法書:https://pan.baidu.com/s/1Mni4kukikK0MZxMPwoMb9A?pwd=9axr

變數

variable_name = variable_value (變數的名字 = 變數的值)

變數的值可以是整數(eg: 5),也可以是小數(eg: 4.8),也可以是字串(eg: 'Max')
(*注:字串需要用引號括起來,單引號'和雙引號"效果相同)

註釋

當程式碼中需要新增文字描述時,可以使用註釋

  1. 單行註釋使用 #,eg: # 這是單行註釋

  2. 多行註釋使用 ''''''"""""" (3對單引號或者3對雙引號)

'''
這是
多行
註釋
'''

高階變數型別(資料結構)

  1. 列表(list)
empty_list = []  # 建立空列表`
fruit = ['apple', 'banana', 'pear']  # 建立一個包含3個字串的列表
empty_list.append(1)  # 向列表中新增元素

函式

定義函式時需要使用 def 關鍵字

def function_name(arg1, arg2, ...):

    return 'Something'

定義類時需要使用 class 關鍵字

物件 的區別:
是某個東西的一個大的分類,而 物件 則是該分類下的一個子集
如:貓科動物是一個 ,而老虎和貓則是該類中的兩個 子集,當然,老虎和貓下面還會有其它的更小的子集,如:東北虎、波斯貓等

class Person:
    age = 15
    name = '李華'
    gender = 1  # 0表示女,1表示男
    '''以上3個就是類的屬性,可以透過 '.' 來訪問類中的屬性'''

    def __init__(self, age, name, gender):
        """類的建構函式,可以自行透過類來構造一個物件"""
        self.age = age
        self.name = name
        self.gender = gender
    
lihua = Person()  # 不傳入任何值時使用類的預設的3個屬性
xiaohong = Person(13, '小紅', 0)  # 傳入新的引數來創造一個新的物件(不使用預設的屬性)

# 除了以上兩種方法,也可以先使用預設的屬性建立物件,然後修改物件的屬性
xiaoli = Persion()
xiaoli.age = 14
xiaoli.name = '小李'
xiaoli.gender = 1  # 與預設屬性相同

呼叫庫函式

當我們能夠定義函式和類後,為了寫程式碼時的簡便性,我們可以使用很多別人已經定義好的函式方法來實現我們想要實現的功能,而不需要我們再重新定義函式

def abs(var):
    """絕對值函式"""
    if var < 0:
        return -var
    return var

上面是我們自己定義的一個絕對值函式,如果我們每次在編寫新的程式碼程式時都需要把這段程式碼重新複製一遍就太麻煩了,這個時候我們就可以使用已經定義好的函式

import math  # 匯入math庫函式
math.abs()  # 這個函式實現了我們上面相同的功能

from math import abs  # 也可以使用下面這種庫函式呼叫的方式
abs()

課後作業

  1. 列印輸出
    編寫一個程式,列印出自己的名字和一句問候語(eg: 你好xxx)。

  2. 變數和運算子
    編寫一個程式,輸入兩個數字,然後執行加法、減法、乘法和除法(除數不能為0)運算,最後輸出結果。

  3. 條件語句
    編寫一個程式,輸入一個數字,然後判斷這個數字是奇數還是偶數,並輸出相應的結果。

  4. 迴圈
    編寫一個程式,計算1到100的所有整數的和,然後輸出結果。

  5. 列表
    建立一個列表,包含幾種水果的名稱,然後編寫一個程式,遍歷列表並輸出每種水果的名字。

  6. 函式
    編寫一個函式,接受兩個引數(數字),然後返回它們的和。

  7. 簡單的遊戲
    設計一個簡單的文字遊戲,例如猜數字遊戲或石頭剪刀布遊戲。

  8. 綜合專案
    使用類來設計一個能夠進行四則運算的計算器程式。

    提示:

    class Calculator:
        def add(a, b):
           ...
        def sub(...):
           ...
        ...
        
    my_calculator = Calculator()  # 初始化一個名叫`my_calculator`的物件
    print(my_calculator.add(1, 3))  # 計算 1 + 3
    

Day2

網路程式設計

HTML

超文字標記語言(英語:HyperText Markup Language,簡稱:HTML)

<!--示例-->
<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <title>菜鳥教程(runoob.com)</title>
    </head>
    <body>
        <h1>我的第一個標題</h1>
        <p>我的第一個段落。</p>
    </body>
</html>
  1. 標籤

    使用尖括號<>括起來的就叫標籤,標籤分為一般標籤和自閉和標籤

    1. 一般標籤

      <html>
          <head>
              
          </head>
          <body>
              
          </body>
      </html>
      

      以上也是html的基本框架

    2. 自閉和標籤

      <br>  <!--換行符-->
      <hr>  <!--水平分割線-->
      
  2. 註釋:

    <!--中間寫註釋-->
    <!--註釋
    也可以
    寫多行-->
    

表單(傳送網路請求)

<form method="" action="">
    
</form>

客戶端透過瀏覽器傳送網路請求 --> 伺服器端接受網路請求並做出相應

  • 使用瀏覽器傳送網路請求

    舉例:https://www.baidu.com/s?wd=xxx

  • 使用Python編寫程式傳送網路請求

Day3

VPN軟體下載

  1. 下載軟體Clash for Windows

    軟體連結:https://github.com/Fndroid/clash_for_windows_pkg/releases

  2. 訂閱地址:https://subscribe.kuaimao.cloud/api/v1/client/subscribe?token=251f81bba2522dfc1ed63328ebab662b

    img

專案使用方法

Day4

QtDesigner

準備工作

  1. 安裝PyQt5-tools軟體包:pip install PyQt5-tools

  2. 位置:

    QtDesigner : your_python_path/Lib/site-packages/qt5_applications/Qt/bin/designer.exe

    PyUIC : your_python_path/Scripts/pyuic5.exe

  3. xxx.ui轉換為xxx.py程式:pyuic5 xxx.ui -o xxx.py

  4. 配置PyCharm

    Setting——Tools——External Tools

    新建:

    1. QtDesigner :

      img

    2. PyUIC :

      img

  5. 建立一個run_xxx.py程式:

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow
    from gui import Ui_MainWindow
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        mainWindow = QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(mainWindow)
        mainWindow.show()
        sys.exit(app.exec_())
    

連線訊號和槽

# 使用connect函式連線訊號和槽
self.pushButton.clicked.connect(self.click_button)

讀取文字輸入框及修改文字標籤顯示

self.lineEdit.text()  # 讀取文字輸入框中的內容
self.lineEdit.setText()  # 設定文字輸入框中的內容
self.label.text()  # 讀取標籤的內容
self.label.setText()  # 設定標籤的內容

元件分佈(Layout)

課後作業

  1. 使用PyQt5完成上次作業8(能夠進行四則運算的計算器)
  2. 自行使用PyQt5設計一個小程式(可以很簡單,也可以很炫酷)

Day5

revChatGPT庫函式講解

  1. 安裝jupyter notebook

    pip install jupyter

    jupyter notebook

  2. revChatGPT核心函式講解

from revChatGPT.V3 import Chatbot
api_key = 
# 建立一個chatbot聊天機器人(需要api_key)
chatbot = Chatbot(api_key=api_key, proxy=proxy, timeout=3)

# 傳送問題請求,並獲取回覆
for data in chatbot.ask_stream("hello"):
    print(data, end="", flush=True)

詳解專案

使用方法

  1. 設定api_key、proxy代理
  2. 儲存、讀取配置檔案
  3. 使用VPN,輸入內容併傳送

Qt Widget(元件)

  1. QMenu(選單欄)

  2. QAction(子功能)

    self.action_save_config.triggered.connect()

    區別於按鈕的點選事件的繫結

  3. QMessageBox(對話方塊)

    QMessageBox.information(<parent_widget>, title, message)
    # <parent_widget>即父元件
    

使用程式碼編寫GUI

  1. QWidget(基本元件)

    center_widget = QWidget(<parent_widget>)

    QLabel、QLineEdit、QPushButton、QComboBox

  2. QVBoxLayout、QHBoxLayout(分佈元件)

    layout = QVBoxLayout(widget)
    layout.addWidget(widget1)  # 在佈局元件中新增一般元件
    layout.addWidget(widget2)
    ...
    widget.addLayout(layout)  # 在一般元件中新增布局元件
    widget.setLayout(layout)  # 將佈局元件設定為一般元件中的佈局狀態
    
  3. QListWidget(元件列表)(可省略)

    • QListWidgetItem(列表子項)

比賽模擬

  1. 給我講一下你們的專案?

    做了什麼?有什麼功能?用什麼做的?怎樣做的?遇到了哪些問題?怎樣解決的?

  2. 為什麼要做這個專案?

    靈感來源(生活中遇到了什麼問題?)、專案解決了哪些問題?

  3. 你們專案有哪些優勢?

    與同型別產品相比

  4. 專案現在有什麼缺陷?(不一定會問,可能是評委提出來的)

    有哪些問題?以後怎樣改善?

計算器的實現

中綴表示式-->字尾表示式

1 + (2 + 3) * 4 --> 1 2 3 + 4 * +

後進先出

相關文章