Leaf-Salix.github.io

my blog

View on GitHub

8.程序设计方法学

8.1 实例13:体育竞技分析

“体育竞技分析”问题分析

自顶向下和自底向上

“体育竞技分析”实例解析

“体育竞技分析”举一反三

8.2 Python程序设计思维

计算思维与程序设计

计算生态与Python语言

用户体验与软件产品

基本的程序设计模式

8.3 Python第三方库安装

看见更大的Python世界

第三方库的pip安装方法

第三方库的集成安装方法

第三方库的文件安装方法

8.4 模块7:os库的使用

os库基本介绍

os库之路径操作

os库之进程管理

os库之环境参数

8.5 实例14:第三方库安装脚本

“第三方库安装脚本”问题分析

“第三方库安装脚本”实例解析

“第三方库安装脚本”举一反三

测验

单项选择题

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

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

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

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

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

    D

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

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

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

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

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

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

    D

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

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

    A. 计算和思维

    B. 描述和执行

    C. 抽象和自动化

    D. 抽象和执行

    C

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

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

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

    A. 软件产品=程序功能+用户体验

    B. 软件产品=程序功能+速度优化

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

    D. 软件程序就是软件产品

    A

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

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

    A. 使用集成安装工具

    B. 使用pip命令

    C. 访问UCI网站下载安装文件

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

    D

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

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

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

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

    C. os库仅适用于Windows平台

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

    B

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

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

    A. os.path.relpath(path)

    B. os.path.abspath(path)

    C. os.path.basename(path)

    D. os.path.normpath(path)

    A

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

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

    A. os.process()

    B. os.start()

    C. os.system()

    D. os.run()

    C

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

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

    A. 过程

    B. 对象

    C. 循环结构

    D. 函数

    D

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

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

    A. 计算思维是基于计算机的思维模式

    B. 计算思维是逻辑思维的演进

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

    D. 计算思维从古至今一直存在

    A

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

程序设计题

  1. 英文字符的鲁棒输入

    描述

    获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    输入输出示例

      输入 输出
    示例 1 *&^123abc0e abce
    string=str(input())
    for c in string:
        if 'A'<=c<='Z' or 'a'<=c<='z':
            print(c,end="")
    ---
    alpha = []
    for i in range(26):
        alpha.append(chr(ord('a') + i))
        alpha.append(chr(ord('A') + i))
    s = input()
    for c in s:
        if c in alpha:
            print(c, end="")
    注意这里采用遍历字符的方式实现通过约束字母表达到鲁棒效果
    
  2. 数字的鲁棒输入

    描述

    获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    (1)无论用户输入何种内容,程序无错误;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    (2)如果输入有误,请输出”输入有误”。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    输入输出示例

      输入 输出
    示例 1 1+2j (-3+4j)
    示例2 abd 输入有误
    try:
        a=str(input())
        b=eval(a)
        if str(b).strip("()")!=a:#处理复数eval后两边加()
            print("输入有误")
        else:
            print(b**2)
    except:
        print("输入有误")
    ---
    s = input()
    try:
        if complex(s) == complex(eval(s)):
            print(eval(s)**2)
    except:
        print("输入有误")
    complex()和complex(eval())之间的比较将能够排除非数字类型的输入
       
    注意不能直接使用eval()否则用户可以通过输入表达式如100**2输入数字与要求不同在实际应用中带来安全隐患)。