20214201 2019-2020-2 《Python程序設計》實驗一報告
課程:《Python程序設計》
班級: 2142
姓名: 劉嘉銘
學號: 20214201
實驗教師:王志強
實驗日期:2022年3月17日
必修/選修: 公選課
1.實驗內容
1.熟悉Python開發環境;
2.練習Python運行、調試技能;
3.編寫程序,練習變量和類型、字符串、對象、縮進和注釋等;
4.掌握git技能。
2. 實驗過程及結果
1.熟悉Python開發環境;
a)安裝Python3環境
- 通過Mircosoft Store安裝
- 通過Python官網安裝 https://www.python.org/
b)安裝PyCharm軟件 https://www.jetbrains.com/pycharm/download/#section=windows
成功啟動PyCharm編譯環境!
2.練習Python運行、調試技能;
a)CMD運行、調試
-
運行
-
調試
在Python交互環境中啟用調試:在源文件要進入調試的地方輸入如下代碼再運行即可:點擊查看代碼
1 import pdb 2 pdb.set_trace()
b)IDLE運行、調試
- 運行
- 調試
- 在編譯器中想調試的語句上增加或刪除斷點。在該語句上右鍵選擇Set Breakpoint, Clear Breakpoint
- 運行要調試的文件(Fn+F5),在出現的Shell窗口中,點擊菜單欄Debug欄中的Debugger,出現調試控制窗口(如下圖)
Go:跳至斷點
Step:進入函數
Over:單步執行
Out:跳出函數
Quit:結束調試
中間白色框內為正在執行的語句
下部Locals為局部變量值
c)PyCharm運行、調試
- 運行(Ctrl+Shift+F5)
- 進入調試模式
- 方法一:
輸入if __name__
,PyCharm會自動識別並在左側行數欄中顯示綠色箭頭,右鍵綠色箭頭則可進入調試模式。
- 方法二:
無代碼空白處直接右鍵選擇“調試”。 - 方法三:
在最上方菜單欄出選擇“運行”欄中的“調試”選項。
- 方法一:
- 斷點調試
點擊行數欄右側位置出現紅點,並使整行紅色高亮顯示,即設置好斷點。
使用調試模式運行程序。
對程序進行調試操作,調試完畢后現實如下畫面:
其他斷點調試相關操作與內容詳見參考資料的拓展。
3.編寫程序,練習變量和類型、字符串、對象、縮進和注釋等;
(1)編寫程序
a)“Hello,World”:
點擊查看代碼
print("Hello,World")
b)猜數游戲(升級版)
點擊查看代碼
import random
ans = random.randint(int(input("Left side of range:")),int(input("Right side of range:")))
bat = int(input("Input the times you want to try:"))
x = int(input("Please guess a number:"))
cnt = int(1)
for i in range(1,bat):
if x == ans:
print("You Win! The random number is ",ans)
print("\n")
print("You have tried",cnt)
break
if x<ans:
print("Too Small")
x = int(input("Please try again:"))
print("Residue time: ",int(bat-i-1))
cnt = cnt+1
continue
elif x>ans:
print("Too large")
x = int(input("Please try again:"))
print("Residue time: ",int(bat-i-1))
cnt = cnt+1
continue
if cnt == bat:
print("You lose!")
print("The random number is: ",ans)
(2)變量和類型、對象
Python3中有六個標准的數據類型:
Number(數字)、String(字符串)、Tuple(元組);
List(列表)、Set(集合)、Dictionary(字典)。
前三者為不可變數據,后三者為可變數據。
可以使用type()和isinstance()函數來檢測數據類型。
- Number(數字)
含int(整數)、float(浮點數)、bool(布爾數)、complex(復數)。
點擊查看代碼
a = 1 # 整數
b = 1.1 # 浮點數
c = True # 布爾數
d = 1+1j # 復數
print(type(a), type(b), type(c), type(d))
數值運算法則:
加法、減法、乘法、除法(整除)、取余、乘方、位運算等。
點擊查看代碼
x, y = 5, 2 # 賦值語句
print( x + y ) # 加法
print( x - y ) # 減法
print( x * y ) # 乘法
print( x / y ) # 除法(輸出浮點數)
print( x // y ) # 除法(輸出整數)
print( x % y ) # 取余
print( x ** y ) # 乘方
print( x | y ) # 或運算
print( x & y ) # 與運算
print( x ^ y ) # 異或運算
(3)字符串
儲存字符,儲存位從0位為首位,-1位末位。
如儲存一個str = 'ABCDEFG'字符串,則str[0]='A',str[1]='B',str[-1]='G'。
點擊查看代碼
str = 'Besti'
print (str) # 輸出字符串
print (str[0:-1]) # 輸出第一個到倒數第二個的所有字符
print (str[0]) # 輸出字符串第一個字符
print (str[2:4]) # 輸出從第三個開始到第四個的字符
print (str[2:]) # 輸出從第三個開始的后的所有字符
print (str * 2) # 輸出字符串兩次,也可以寫成 print (2 * str)
print (str + "UPUP") # 連接字符串
(4)序列
a)列表List
序列是 Python 中最基本的數據結構。
序列中的每個值都有對應的位置值,稱之為索引,第一個索引是 0,第二個索引是 1,依此類推。
點擊查看代碼
# 列表
list1 = ['Monday', 'Tuesday', 'Wednesday', 'Friday', 'day']
# 訪問列表
print(list1[0])
print(list1[-1])
print(list1[0:2])
# 遍歷列表
for i in list1:
print(i)
# 修改列表
print("原來第四個元素:",list1[3])
list1[3] = 'Thursday'
print("現在第四個元素:",list1[3])
# 刪除列表某個元素
print("原始列表:",list1)
del list1[4]
print("現在列表:",list1)
# 更新列表
list1.append('Friday')
print("更新后列表",list1)
b)元組
Python 的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括號 ( ),列表使用方括號 [ ]。
點擊查看代碼
# 定義元組(可以為空元組)
tup1 = (1,2,3,4,5)
tup2 = (1,6,7)
tup3 = ()
# 訪問元組
print(tup1[1])
# 遍歷元組
for i in tup1:
print(i)
# 修改元組
tup3 = tup1 + tup2
# 刪除元組
del tup3
c)字典
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中
點擊查看代碼
# 定義字典
dic = {'name':'ljm', 'number':20214201, 'test':123}
# 打印字典
print(dic)
# 訪問字典
print(dic['number'])
# 修改字典
dic['test'] = 456
# 刪除字典(元素)
del dic['test']
print(dic)
# 清空字典
dic.clear()
print(dic)
d)集合
集合(set)是一個無序的不重復元素序列。
可以使用大括號 { } 或者 set() 函數創建集合。
點擊查看代碼
# 定義集合
set1 = {1,2,3,4,5}
set2 = {1,3,5,7,9}
set3 = {0,2,4,6}
# 打印集合
print("打印set1:",set1)
print("打印set2:",set2)
print("打印set3:",set3)
# 修改集合
set3.add(8)
print("打印set3:",set3)
# 刪除集合
set2.remove(9)
print("打印set2",set2)
# 計算集合元素個數
print("計算set1元素個數",len(set1))
# 判斷某元素是否在集合內
if 1 in set3:
print("1在set3")
else:
print("1不在set3")
# 集合之間的關系
print("set1-set2:",(set1-set2))
print("set1&set2:",(set1&set2))
print("set1|set2:",(set1|set2))
print("set1^set2:",(set1^set2))
(5)縮進和注釋
上文代碼中包含了縮進和注釋的相關內容。
縮進:使代碼更加富有邏輯性、美觀性、易讀性。
注釋:便於自己和他人閱讀代碼時了解該行(段)代碼的作用。
4.掌握git技能。
通過將PyCharm的代碼推送到Gitee上實現代碼開源、雲儲存、雲協作等操作。
-
新建倉庫
-
配置倉庫文件
-
配置Git環境(初始化)
-
在PyCharm中配置Git和Gitee環境
-
提交並推送文件
由於在配置時出現了一些問題,經過修改后得以解決,將倉庫名和文件名進行了更改,但不影響文件上傳和修改。
3. 實驗過程中遇到的問題和解決過程
-
問題1:PyCharm未激活
-
問題1解決方案:通過萬能的網絡搜索激活碼輸入激活碼后進行激活。
-
問題2:Git文件提交選項灰色,無法選擇提交
-
問題2解決方案:新建項目后問題得以解決。目測是在配置文件時,上傳Github與Gitee發生了矛盾。
-
問題3:Git文件提交后,Gitee碼雲倉庫不顯示
-
問題3解決方案:目測是上傳到了Github中。在設置中的插件欄里搜索Gitee安裝Gitee插件,重啟PyCharm,在插件里登錄Gitee賬號。在Gitee網站上安裝SHH公鑰。在PyCharm最上方菜單選項欄中選擇VCS(GIT),Gitee,Share Project on Gitee,新建倉庫后,選擇上傳文件,提交文件,推送文件。
其他(感悟、思考等)
由於本人具有淺薄的編程基礎(C++),對於理解上述Python基本概念上並無太大障礙,唯一遇到困難的就是配置gitee環境時的相關問題(已解決)。
Python相對於C++的語法更加簡單,並且序列的四個類型簡化了變量的儲存方式,便於程序更高效的運行。
(若精力有限將更新Pyhton與C++部分基本語法的對比)