目录
实验目的:
- 学会编写简单的 Python 程序;
- 复习基本数据类型和运算符的应用;
- 练习使用简单的输入输出;
- 复习流程控制语句的运用;
- 学会使用 pyCharm 开发环境中的 debug 调试功能:单步执行、设置断点、观察变量值。
实验任务:
- 运算。请用户输入两个正整数,其中用户输入的数字均为二进制形式的字符串,打印其中较大数字的十进制形式,和较小数字的八进制进制形式。并打印两个整数乘积的十六进制形式。
- 序数。序数位置表示,如 1st 和 2nd。序数大多数以 th 结尾,只有 1、2 和3 例外。在一个列表中存储数字 1 到 9。遍历这个列表。在循环中使用一个 if-elif-else 结构,以打印每个数字对应的序数。输出内容应为“1st 2nd 3rd 4th 5th 6th 7th 8th 9th”,但每个序数都独占一行。
- 使用 for 语句代替 while 循环语句,完成相同的功能。
- 笼中共有鸡和兔 100 只鸡和兔的脚共 248 只,求笼中鸡和兔各有多少只。
- 使用 debug 调试功能观察下述程序运行中的变量值的变化情况。
#python1_5.py
a=0
for i in range(1,50): a+=i
b=i
if i % 5 == 0: print(b)
实验步骤:
- 创建一个项目 python1,向其中添加一个 python 文件 python1_1.py。首先,使用 input()函数输入两个二进制字符串;然后,将二进制字符串转换成十进制数字,随后使用 if-else 语句比较两个整数的大小;在条件语句中,使用 print()函数输出其中较大的数字的十进制形式和较小数字的八进制形式(oct()函数),并输出两个整数乘积的十六机制形式(hex()函数);最后,运行程序,查看结果。
- 在项目 python1 中新建文件 python1_2.py,输出序数。首先,新建一个列表,存储数字 1 到 9;然后,使用 while 循环遍历这个列表;在 while 循环中, 使用 if-elif-else 语句判断 4 类情形,分别输出该数字和相应的后缀;最后,运行程序。
- 在项目 python1 中新建文件 python1_3.py,使用 for 语句代替 while 语句, 完成上述实验任务 2 中相同的功能。
- 在项目 python1 中新建文件 python1_4.py,使用 for 语句枚举鸡和兔子数, 然后判断鸡和兔子脚和个数满足条件,打印输出。
- 学习简单的 debug 调试功能。
(1)在项目 python1 中新建文件 python1_5.py,并将任务 5 的代码复制到文件中。
(2)在代码第 3 行设置断点。单击该行代码左侧空白处设置断点,如图 1.1所示。
图 1.1 设置断点
一个断点标记了一个代码行,当 Pycharm 运行到该行代码时会将程序暂时挂起。
注意断点会将对应的代码行标记为红色,取消断点的操作也很简单,在同样位置再次单击即可。
(3)开启代码调试。可以通过鼠标右击代码处,可以来 debug 程序,如图1.2(a)所示;或通过点击右上角小虫子的图标来进行调试,见图 1.2(b)。
(a) (b)
图 1.2 开启代码调试
PyCharm 开始运行,并在断点处暂停,断点所在代码行变蓝,意味着 Pycharm程序进程已经到达断点处,但尚未执行断点所标记的代码。
此时,界面左下方出现 Debug tool window 窗口,显示当前重要调试信息, 并允许用户对调试进程进行更改。如图 1.3 所示。
图 1.3 Debug 窗口
(4)Debug 窗口一排有七个图标,功能如下。分别点击各个图标查看相应的功能。并在调试过程中观察变量的状态。
- show execution point (F10) 显示当前所有断点
- step over(F8) 单步调试
若函数 A 内存在子函数 a 时,不会进入子函数 a 内执行单步调试,而是把子函数 a 当作一个整体,一步执行 - step into(F7) 单步调试
若函数 A 内存在子函数 a 时,会进入子函数 a 内执行单步调试。 - step into my code(Alt + Shift +F7) 执行下一行但忽略 libraries(导入库的语句)
- force step into(Alt + Shift +F7) 执行下一行忽略 lib 和构造对象等
- step out(Shift+F8)当目前执行在子函数 a 中时,选择该调试操作可以直接跳出子函数 a,而不用继续执行子函数 a 中的剩余代码。并返回上一层函数
- run to cursor(Alt +F9) 直接跳到下一个断点
参考代码:
#python1_1.py
m=int(input("m="),2)
n=int(input("n="),2)
a=int(m)
b=int(n)
print("较大的数十进制为:",max(a,b))
print("较小的数八进制为:",oct(min(a,b)))
print("乘积16进制为:",hex(a*b))
#python1_2
l=[1,2,3,4,5,6,7,8,9]
n=0
while n<9:
if l[n]==1:
print(str(l[n])+'st',end=' ')
elif l[n]==2:
print(str(l[n])+'nd',end=' ')
elif l[n]==3:
print(str(l[n])+'rd',end=' ')
else:
print(str(l[n])+'th',end=' ')
n+=1
#python1_3
l=[1,2,3,4,5,6,7,8,9]
for n in range(0,9):
if l[n]==1:
print(str(l[n])+'st',end=' ')
elif l[n]==2:
print(str(l[n])+'nd',end=' ')
elif l[n]==3:
print(str(l[n])+'rd',end=' ')
else:
print(str(l[n])+'th',end=' ')
#python1_4
for n in range(101):#鸡的个数为n
if 2*n+(100-n)*4==248:
print(str(n)+"只鸡",str(100-n)+"只兔")
#python1_5.py
a=0
for i in range(1,50):
a+=i
b=i
if i % 5 == 0:
print(b)