在上公共的编程基础课时,我们经常受到学生的质疑: 我们学这玩艺儿有什么用? 学生的疑问来自于“他没有从课程中得到通过程序设计来解决本专业问题的体验”。重庆大学的教学团队设计了很多与各专业紧密相关的程序设计案例,我们会陆续分享出来,供大家参考。
本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频
(在原始案例中,代码中间留空让学生填写,这里的代码是完整的)
一幅细胞照片经过二值化以后可以视为像素值为0或1的矩阵,如图21-1所示。在该矩阵中,值为1为元素表示该处是细胞或细胞的一部分,该元素的上、下、左、右的相邻元素如果也是1,则相邻元素与该元素位于同一个细胞内;矩阵中值为0的元素表示该处无细胞。识别并统计显微镜下一幅细胞照片中的细胞数量,是血液常规检查的最基本任务之一。
对于图21-1所示的细胞照片,按上述规则,容易数出该幅照片中包含7个细胞。注意,第3行第3列是一个孤立细胞(图中已用底纹区分),它与第2行第5列的细胞并非同一个,因为它位于第2行第4列元素的左下方,而不是上下左右的位置。
在本实验对应的实验子目录中有一名为cellpicture.txt的文本文件,其内容为细胞照片的二值化矩阵。请编写程序,从该文件读取矩阵内容并统计该矩阵中的细胞数量。
该文件的内容如下:
12 14
10111000011100
01100110001101
00000111000011
00110000001000
00011000111000
00111100010011
10011101100111
11000100000001
00000000011000
00000000000000
10001100110000
10001000011111
其中,第1行的1214以空格分隔,表示该矩阵有12行14列。接下来,则是12行元素数据,每行14个0/1字符。
21.1 从文件读入二值化矩阵
下述程序负责从文件cellpicture.txt中读取二值化矩阵,并将其组织在嵌套列表d中。请将程序补充完整并运行,确保矩阵d的内容与文件一致。注意,矩阵元素的类型应为整数。
d = []
with open('cellpicture.txt') as f:
m,n = map(int,f.readline().split())
for x in range(m):
r =