当前位置:   article > 正文

python慕课版课后题答案,python123和中国大学慕课_python123python语言程序设计答案

python123python语言程序设计答案

大家好,小编来为大家解答以下问题,中国大学moocpython程序设计答案,中国慕课python程序设计答案,现在让我们一起来看看吧!

MOOC《Python语言程序设计》(第15次)

程序设计方法学(第八周)21.8.19

单向选择题

1、关于os库,以下选项中可以启动进程执行程序的函数是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、os.process()

B、os.run()

C、os.start()

D、os.system()

正确答案 D

除了os.system(),选项其他函数都不存在。

2、自顶向下设计主要由下列哪个语法元素实现?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、函数

B、对象

C、过程

D、循环结构

正确答案 A

函数是自顶向下设计的关键元素,通过定义函数及其参数逐层开展程序设计Python Turtle画递归树

**3、关于Python的os库,以下选项描述正确的是:**‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、os库提供了路径操作、进程管理等若干类功能

B、os库提供了几十个函数,功能比较有限

C、os库是一个第三方库,需要安装后使用

D、os库仅适用于Windows平台

正确答案 A

os库是Python重要的标准库之一,提供了几百个函数功能,覆盖与操作系统、文件操作等相关的众多功能。os库适合所有操作系统。

4、关于用户体验,以下选项描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、编程只是手段,程序最终为人类服务,用户体验很重要

B、用户体验不重要,只要有程序功能即可

C、好产品不一定有好的用户体验,关键在于功能创意

D、用户体验是客观的,完全可以靠技术来实现

正确答案 A

一个提醒进度的进度条、一个永不抛出异常的程序、一个快速的响应、一个漂亮的图标、一个合适尺寸的界面等都是用户体验的组成部分。总的来说,用户体验是一切能够提升程序用户感受的组成。

5、关于Python第三方库安装方法,以下选项描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、访问UCI网站下载安装文件

B、使用pip命令

C、使用集成安装工具

D、联系第三方库作者索要安装文件

正确答案 D

请不要联系作者索要第三方库,这不是获取第三方库的合理模式。

6、以下选项关于计算生态描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、计算生态主要以开源项目为组织形式

B、高质量计算生态需要顶层设计的参与才能保障

C、计算生态存在竞争发展、相互依存和迅速更迭的特点

D、计算生态类似自然生态,不受单一组织或人物的控制,形成了技术演化路径

正确答案 B

计算生态以竞争发展、相互依存和迅速更迭为特点,在开源项目间不存在顶层设计,以类自然界"适者生存"的方式形成技术演进路径。

7、以下选项对计算思维本质描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、抽象和执行

B、描述和执行

C、计算和思维

D、抽象和自动化

正确答案 D

计算思维的本质是:抽象和自动化。

抽象一个运算过程,以能够按步骤描述为目标;并利用计算机运算的高速特性自动化执行。

8、关于os.path子库,以下选项中用来计算相对路径的函数是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、os.path.basename(path)

B、os.path.relpath(path)

C、os.path.normpath(path)

D、os.path.abspath(path)

正确答案 B

顾名思义:os.path.relpath(path) 是 relative path处理函数。

9、关于软件产品和程序的区别,以下描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、软件产品=程序功能+速度优化

B、软件程序就是软件产品

C、软件产品=程序功能+用户体验

D、从程序功能到软件产品的产品化代价很小

正确答案 C

产品不仅需要功能,更需要更好的用户体验。往往,产品都需要综合考虑技术功能和人文设计,这源于产品的商业特性。即,商业竞争要求产品不能只关心技术功能,更要关心用户易用和喜好需求。

10、关于计算思维,以下选项描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、计算思维从古至今一直存在

B、计算思维关于设计和构造,可以脱离计算机而存在

C、计算思维是基于计算机的思维模式

D、计算思维是逻辑思维的演进

正确答案 C

计算思维是基于计算机的思维模式,计算机出现之前,由于没有快速计算装置,计算所反映的思维模式主要是数学思维,即通过公式来求解问题。当快速计算装置出现后,计算思维才真正形成。

程序设计题

英文字符的鲁棒输入

  1. '''
  2. 描述:
  3. 获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误。
  4. '''
  5. # 方法一
  6. s = input()
  7. for c in s:
  8. if 'z'>=c>='a' or 'Z'>=c>="A": #逐个比较字符
  9. print(c, end="")
  10. # 方法二
  11. alpha = []
  12. for i in range(26): # 将所有英文字母收录到alpha列表中
  13. alpha.append(chr(ord('a') + i))
  14. alpha.append(chr(ord('A') + i))
  15. s = input()
  16. for c in s:
  17. if c in alpha:
  18. print(c, end="")

数字的鲁棒输入

  1. # 数字的鲁棒输入
  2. '''
  3. 描述
  4. 获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。
  5. '''
  6. s = input()
  7. try: # 这里用到了 try except 异常处理
  8. if complex(s) == complex(eval(s)):
  9. print(eval(s)**2)
  10. except:
  11. print("输入有误")

complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

  1. # complex使用实例
  2. >>>complex(1, 2)
  3. (1 + 2j)
  4. >>> complex(1) # 数字
  5. (1 + 0j)
  6. >>> complex("1") # 当做字符串处理
  7. (1 + 0j)
  8. # 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
  9. >>> complex("1+2j")
  10. (1 + 2j)

学习笔记

1、实例13:体育竞技分析
自顶向下(设计)
  • 将一个总问题表达为若干个小问题组成的形式

  • 使用同样的方法进一步分解小问题

  • 直至,小问题可以用计算机简单明了的解决

自底向上(执行)
  • 分单元测试,逐步组合
  • 按照自顶向下相反的路径操作
  • 直至,系统各部分以组装的思路都经过测试和验证
实例程序:

需求:科学分析体育竞技比赛
输入:球员能力值
输出:预测的比赛成绩

比赛规则:
双人击球比赛:A&B,回合制
开始时一方先发球,直至判分,接下来胜者发球
球员只能在发球局得分,15分胜一局

程序设计思路:

采用自顶向下的设计思路,将整个大问题分解为四个部分:打印比赛信息(putInfo);获得输入信息(getInputs);模拟N局比赛(simNgames);打印比赛结果(printSummary)。

其中,对于模拟N局比赛又可以分解为循环模拟一局比赛(simOneGame)

再者,对于模拟一句比赛又可以包含一句比赛的结束判断(gameOver),也可以直接把他规划在模拟一句比赛的实现中,不需要分解的这么详细。

程序流程图如下:

在这里插入图片描述

注释:测试完历程后发现并没有实现五局三胜制,因此对历程做了修改

当然,这样会增加程序的计算量,模拟1000场比赛就要进行5000局模拟

  1. # 实例13:体育竞技分析
  2. '''
  3. 程序总体框架及步骤
  4. -步骤1:打印程序的介绍性信息(printInfo)
  5. -步骤2:获得程序运行参数:proA, proB, n(getInputs)
  6. -步骤3:利用球员A和B的能力值,模拟n局比赛(simNGames)
  7. --模拟一句比赛(simOneGame)
  8. ---模拟比赛结束(gameOver)
  9. -步骤4∶输出球员A和B获胜比赛的场次及概率(printSummary)
  10. '''
  11. from random import random
  12. def printInfo():
  13. print("这个程序模拟两个选手A和B的某种竞技比赛")
  14. print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
  15. def getInputs():
  16. a = eval(input("请输入选手A的能力值(0-1):"))
  17. b = eval(input("请输入选手B的能力值(0-1):"))
  18. n = eval(input("模拟比赛的场次:"))
  19. return a,b,n
  20. def gameOver(a,b): # 判断选手获得一句的胜利,即先获得15分
  21. return a == 15 or b==15
  22. def simOneGame(probA,probB):
  23. scoreA,scoreB = 0,0
  24. serving = "A"
  25. while not gameOver(scoreA,scoreB): # 对局未结束时
  26. if serving == 'A': # A发球时
  27. if random() < probA: # 若A得分,scoreA+1
  28. scoreA +=1
  29. else: # 若A未得分,换B发球
  30. serving = 'B'
  31. else:
  32. if random() < probB: # 若B得分,scoreB+1
  33. scoreB +=1
  34. else:
  35. serving = 'A' # 若B未得分,换A发球
  36. return scoreA,scoreB
  37. def simNgames(n,probA, probB):
  38. winsA,winsB = 0,0 # A,B胜利的总场数
  39. for i in range(n):
  40. wA, wB = 0, 0 # 一场比赛(5局)中A或B胜利的场数
  41. while(wA<3 and wB<3):# 当A,B中一人先赢3局,比赛结束
  42. scoreA, scoreB = simOneGame(probA, probB)
  43. if scoreA > scoreB: # 若A胜一句,A胜利的局数+1
  44. wA += 1
  45. else: # 若B胜一局,B胜利的局数+1
  46. wB += 1
  47. if wA == 3:
  48. winsA += 1 # 若本场A胜,A胜利的总场数+1
  49. else:
  50. winsB +=1 # 若本场B胜,B胜利的总场数+1
  51. return winsA,winsB
  52. def printSummary(winsA,winsB):
  53. n = winsA + winsB
  54. print("竞技分析开始,共模拟{}场比赛".format(n))
  55. print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))
  56. print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))
  57. def main():
  58. printInfo()
  59. probA,probB,n = getInputs()
  60. winsA,winsB = simNgames(n,probA,probB)
  61. printSummary(winsA,winsB)
  62. main()
2、Python程序设计思维
2.1 计算思维
  • 逻辑思维:推理和演绎,以数学为代表
  • 实证思维:实验和验证,以物理为代表
  • 计算思维:设计和构造,以计算机为代表

计算思维抽象问题的计算过程,利用计算机自动化求解。

计算思维基于计算机强大的算力和海量数据

抽象计算过程,关注设计和构造,而非因果

以计算机程序设计为实现的主要手段

2.2 计算生态与Python语言

计算生态的含义

计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。

计算生态的特点

没有顶层设计、以功能为单位,具有竞争发展、相互依存、迅速更迭的特点

计算生态与Python语言的关系

具有以开源项目为代表的大量第三方库

同一功能可能具有多个第三方库,库的建设经过野蛮生长和优胜劣汰的自然选择

库之间相互关联使用,依存发展,逐级封装

社区庞大,新技术更迭迅速

计算生态的价值

加速科技类应用创新的重要支撑

发展科技产品商业价值的重要模式

国家科技体系安全和稳固的基础

计算生态的运用

编程的起点不是算法而是系统

编程如同搭积木,利用计算生态为主要模式

编程的目标是快速解决问题

2.3 用户体验与软件产品

用户体验指用户对产品建立的主观感受和认识,关心功能实现,更要关心用户体验,才能做出好产品编程只是手段,不是目的,程序最终为人类服务

提高用户体验的方法

方法1:进度展示

  • 如果程序需要计算时间,可能产生等待,请增加进度展示
  • 如果程序有若干步骤,需要提示用户,请增加进度展示
  • 如果程序可能存在大量次数的循环,请增加进度展示

方法2:异常处理

  • 当获得用户输入,对合规性需要检查,需要异常处理
  • 当读写文件时,对结果进行判断,需要异常处理
  • 当进行输入输出时,对运算结果进行判断,需要异常处理

其他类方法:

  • 打印输出:特定位置,输出程序运行的过程信息
  • 日志文件:对程序异常及用户使用进行定期记录
  • 帮助信息:给用户多种方式提供帮助信息

用户体验室程序到产品的关键环节!

2.4 基本的程序设计模式

IPO设计:

  • 确定IPO:明确计算部分及功能边界
  • 编写程序:将计算求解的设计变成现实
  • 调试程序:确保程序按照正确逻辑能够正确运行

自顶向下设计:

  • 将一个总问题表达为若干个小问题组成的形式
  • 使用同样的方法进一步分解小问题
  • 直至,小问题可以用计算机简单明了的解决

模块化设计:

  • 通过函数或对象封装将程序划分为模块及模块间的表达具体包括:主程序、
  • 子程序和子程序间关系
  • 分而治之:一种分而治之、分层抽象、体系化的设计思想

需要注意:紧耦合、松耦合(紧耦合:两个部分之间交流很多,无法独立存在;松耦合:两个部分之间交流较少,可以独立存在;模块内部紧耦合、模块之间松耦合

配置化设计

  • 引擎+配置:程序执行和配置分离,将可选参数配置化
  • 将程序开发变成配置文件编写,扩展功能而不修改程序
  • 关键在于接口设计,清晰明了、灵活可扩展

应用开发的四个步骤:

1.产品定义:对应用需求充分理解和明确定义。对产品定义,而不仅是功能定义,要考虑商业模式;

2.系统架构:以系统方式思考产品的技术实现系统架构,关注数据流、模块化、体系架构;

3.设计与实现:结合架构完成关键设计及系统实现结合可扩展性、灵活性等进行设计优化

4.用户体验:从用户角度思考应用效果用户至上,体验优先,以用户为中心

3、Python第三方库安装

python社区:

PyPI·The Python Package Index https://pypi.org/

在这里插入图片描述

第三方库的pip安装方法(主要方法)

  1. # 常用pip命令,需要联网安装
  2. pip install <第三方库名> # 安装指定的第三方库
  3. pip list # 列出当前系统已经安装的第三方库
  4. pip install -U <第三方库名> # 使用-U标更新已安装的库
  5. pip uninstall <第三方库名> # 卸载指定的第三方库
  6. pip download <第三方库名> # 下载但不安装指定的第三方库
  7. pip show <第三方库名> # 列出某个指定第三方库的详细信息
  8. pip search <关键词> # 根据关键词在名称和介绍中搜索第三方库

第三方库的集成安装方法

Anaconda

Pycharm的File—>settings—>python interpreter

第三方库的文件安装方法

从网站上下载第三方库,使用pip intall <文件名>命令进行安装。

UCI页面 :http://www.lfd.uci.edu/~gohlke/pythonlibs/

在这里插入图片描述

4、模块7:os库的使用

os库提供通用的基本的操作系统交互功能

os库是Python标准库,包含几百个函数

常用路径操作、进程管理、环境参数等几类

os库之路径操作

os.path子库以path为入口,用于操作和处理文件路径

库的导入:import os.path 或者 import os.path as op

函数描述
os.path.abspath(path)返回path在当前系统中的绝对路径
>>>os.path.abspath(“file.txt”)
‘c: \lUsers\Tian Song\Python36-32\file.txt’
os.path.normpath(path)归一化path的表示形式,统一用\分隔路径
>>>os.path.normpath(“D: //PYE//file.txt”)
‘D: \IPYE\file.txt’
os.path.relpath(path)返回当前程序与文件之间的相对路径(relative path)
>>>os.path.relpath(“C: / /PYE//file.txt”)
’…\…\…\…\…\…\…\PYE\file.txt’
os.path.dirname(path)返回path中的目录名称
>>>os.path.dirname(“D: / /PYE//file.txt”)
‘D://PYE’
os.path.basename(path)返回path中最后的文件名称
>>>os.path.basename(“D: //PYE//file.txt”)
"file.txt’
os.path.join(path, *paths)组合path与paths,返回一个路径字符串>>>os.path.join(“D:/”,“PYE/file.txt")
‘D:/PYE/file.txt’
os.path.exists(path)判断path对应文件或目录是否存在,返回True或False
>>>os.path.exists(“D://PYE//file.txt”)
False
os.path.isfile(path)判断path所对应是否为已存在的文件,返回True或False
>>>os.path.isfile(“D://PYE//file.txt”)
True
os.path.isdir(path)判断path所对应是否为已存在的目录,返回True或False
>>>os.path.isdir(“D: //PYE//file.txt”)
False
os.path.getatime(path)返回path对应文件或目录上一次的访问时间>>>os.path.getatime( “D:/PYE/file.txt”)
1518356633.7551725
os.path.getmtime(path)返回path对应文件或目录最近一次的修改时间>>>os.path.getmtime(“D:/PYE/file.txt”)
1518356633.7551725
os.path.getctime(path)返回path对应文件或目录的创建时间
>>time.ctime(os.path.getctime(“D:/PYE/file.txt”))
‘Sun Feb 11 21:43:53 2018’
os.path.getsize(path)返回path对应文件的大小,以字节为单位
>>>os.path.getsize(“D:/PYE/file.txt”)
180768

os库之进程管理

os.system(command)

执行程序或命令command

在Windows系统中,返回值cmd的调用返回信息

  1. import os
  2. # 运行计算器
  3. os.system("c:\\Windows\\System32\\calc.exe")
  4. # 打开图片
  5. os.system("C:\\Windows\\System32\\mspaint.exe "
  6. "D:\\PYECourse\\grwordcloud.png")

os库之环境参数

获得或改变系统环境信息

函数描述
os.chdir(path)修改当前程序操作的路径
>>>os.dir(“D:”)
os.getcwd()返回程序的当前路径
>>>os.getcwd( )
‘D:\’
os.getlogin()获得当前系统登录用户名称
>>>os.get1ogin()
‘Tian Song’
os.cpu_count()获得当前系统的CPU数量
>>>os.cpu_count()
8
os.urandom(n)获得n个字节长度的随机字符串,通常用于加解密运算
>>>os.urandom( 10)
b’7\xbe\xf2 ! ixc1=\x01gLlxb3’
5、实例14:第三方库自动安装脚本

需求:批量安装第三方库

  1. # 实例14:第三方库自动安装脚本
  2. import os
  3. libs = {"numpy","matplotlib","pillow","sklearn","requests",
  4. "jieba","beautifulsoup4","wheel","networkx","sympy",
  5. "pyinstaller","django","flask","werobot","pyqt5",
  6. "pandas","pyopeng1","pypdf2","docopt","pygame"}
  7. dellibs = {"sklearn","wheel","networkx","sympy","django",
  8. "flask","werobot","pyqt5","pandas","pyopeng1",
  9. "pypdf2","docopt","pygame"}
  10. try: # 批量安装第三方库
  11. for lib in libs:
  12. os.system("pip install "+lib)
  13. print("{} Successful".format(lib))
  14. except:
  15. print("Failed Somehow")
  16. try: # 批量卸载第三方库
  17. for lib in dellibs:
  18. os.system("pip uninstall "+lib)
  19. print("del {} Successful".format(lib))
  20. except:
  21. print("Failed Somehow")

增加了批量卸载第三方库的程序,卸载时会询问你是否要卸载,要手动输入一个y(yes),如图

在这里插入图片描述

资料来源:
Python语言程序设计_北京理工大学_中国大学MOOC(慕课) https://www.icourse163.org/course/BIT-268001

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览419293 人正在系统学习中
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/591884
推荐阅读
相关标签
  

闽ICP备14008679号