【数据分析基础】实验二 Python程序流程控制、函数设计与使用

news2024/11/16 5:41:06

实验目的

  1. 熟悉选择结构嵌套时代码的缩进与对齐。
  2. 理解带 else 子句的循环结构执行流程和条件表达式 value1 if condition else value2 的用法。
  3. 熟悉使用循环和异常处理机构对用户输入进行约束的用法。
  4. 掌握Python程序中进行选择、循环流程控制的语句、语法,熟练运用选择结构和循环结构解决实际问题。
  5. 掌握函数的定义与调用。
  6. 熟练掌握lambda表达式的使用,理解变量作用域的意义、各种函数参数类型的使用。

实验内容:

编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。 (所谓素数,是指除了1和其自身之外没有其他因数的自然数:2,3,5,7,11,13……)

参考代码:

程序代码:

maxNumber = int(input('请输入一个大于2的自然数:'))
lst = list(range(2, maxNumber))
m = int(maxNumber ** 0.5)

for index, value in enumerate(lst):
    if value > m:
        break
    lst[index+1:] = filter(lambda x: x % value != 0, lst[index+1:])

print(lst)

(2)运行结果(截图):

编写程序,输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答“yes”就继续输入下一个成绩,回答“no”就停止输入成绩。

参考代码:

程序代码:

numbers = []  # 使用列表存放成绩数据
while True:
    x = input("请输入一个成绩:")
    try:
        numbers.append(float(x))  # 将输入的成绩转换为浮点数并添加到列表
    except ValueError:
        print("不是合法成绩,请输入一个数值。")
        continue  # 继续下一次循环,不添加非法成绩
    while True:
        flag = input("继续输入吗?(yes/no):")  # 询问用户是否继续输入
        # 限定用户输入内容必须为yes或no
        if flag.lower() not in ('yes', 'no'):
            print("只能输入yes或no")
        else:
            break
    if flag.lower() == 'no':  # 如果用户选择'no',则结束循环
        break

if numbers:  # 如果列表不为空,计算平均分
    average = sum(numbers) / len(numbers)
    print(f"所有成绩的平均分是:{average:.2f}")
else:
    print("没有输入任何成绩。")

(2)运行结果(截图):

编写程序模拟猜数游戏。程序运行时,系统生成一个随机数,然后提示用户进行猜测,并根据用户输入进行必要的提示(猜对了、太大了、太小了),如果猜对则提前结束程序,如果次数用完仍没有猜对,提示游戏结束并给出正确答案。

参考代码:

程序代码:

from random import randint


def guessNumber(maxValue=10, maxTimes=3):
    value = randint(1, maxValue)  # 随机生成一个1到10之间的整数
    for i in range(maxTimes):
        prompt = 'Start to GUESS:' if i == 0 else 'Guess again:'
        try:
            x = int(input(prompt))
        except:
            print('Must input an integer between 1 and', maxValue)
        else:
            if x == value:
                print('Congratulations!')
                break
            elif x < value:
                print('Too little.')
            else:
                print('Too big.')

    else:  # 检查是否用完了所有的猜测次数
        print('Game Over. FAIL.')
        print(f'The value was {value}.')


guessNumber()

(2)运行结果(截图):

编写程序,输入一个字符串,输出该字符所为密码时的安全强度。

程序代码:

import string
def check(pwd):
    if not isinstance(pwd, str) or len(pwd) < 8:
        return "not suitable for password"

    # 初始化密码强度等级与包含字符种类的对应关系
    d = {1: 'weak', 2: 'below middle', 3: 'above middle', 4: 'strong'}
    # 初始化一个列表,用来标记密码是否含有数字、小写字母、大写字母和标点符号
    r = [False] * 4
    for ch in pwd:
        # 是否包含数字
        if not r[0] and ch in string.digits:
            r[0]=True
        # 是否包含小写字母
        if not r[1] and ch in string.ascii_lowercase:
            r[1]=True
        # 是否包含大写字母
        if not r[2] and ch in string.ascii_uppercase:
            r[2]=True
        # 是否包含指定的标点符号
        if not r[3] and ch in ',.!:?<>':
            r[3]=True
    # 统计包含的字符种类, 返回密码强度
    return d.get(r.count(True), 'error')
# 测试函数
print(check("a26%Cd."))

(2)运行结果(截图):

编程实现:查找字符串中每个字符的首次出现。给定一个任意字符串,要求得到一个新字符串,重复字符只保留一个,并且新字符串中的字符保持在原字符串中首次出现的先后顺序。例如,abcdaaabe处理后应得到abcde。(使用两种不同的方法)

程序代码:

from random import choice
from  string import digits

def func1(text):
    # 转换为集合,去重
    result = set(text)
    # 按其在原字符串中的先后顺序,把集合里的字符连接为字符串
    result =''.join(sorted(result, key=text.index))
    return result

def func2(text):
    result=[]
    for ch in text:
        if ch not in result:
            result.append(ch)
    return ''.join(result)

text = ''.join(choice(digits) for _ in  range(30)) # 随机字符串
print(text)
print(func1(text))
print(func2(text))

(2)运行结果(截图):

    

实验任务

学习教材第1章、第2章内容,根据实验内容练习相关编程知识。

独立完成如下编程任务并提交实验报告。(报告撰写要求详见模板文档)

编写程序,输入一个包含若干整数的列表,输出列表中所有整数连乘的结果。

(1)程序代码:

from functools import reduce
import operator

def multiply_list_numbers(numbers):
    # 使用reduce和operator.mul来计算列表中所有整数的连乘结果
    result = reduce(operator.mul, numbers, 1)
    return result

# 输入一个包含若干整数的列表
input_numbers = list(map(int, input("请输入一个包含若干整数的列表,以空格分隔:").split()))

# 输出列表中所有整数连乘的结果
print(multiply_list_numbers(input_numbers))

(2)运行结果(截图):

实验总结:

在本次实验中,我深入地学习了Python中的流程控制、函数设计和使用,以及异常处理和输入验证等重要概念。通过编写不同的程序,我不仅巩固了理论知识,而且提高了解决实际问题的能力。

知识点小结:

我熟悉了选择结构嵌套时的代码缩进与对齐,这对于保持代码的可读性至关重要。

我理解了带else子句的循环结构执行流程。

我掌握了如何使用循环和异常处理对用户输入进行约束,确保程序能够处理不合法的输入。

我学习了如何定义和调用函数,这有助于我创建模块化的代码,提高了代码的复用性。

我熟练掌握了lambda表达式的使用,并对变量作用域和函数参数类型有了更深刻的理解。

实验体会:

通过本次实验,我体会到了编程不仅仅是写代码,更重要的是如何设计出清晰、高效、可维护的程序。我学会了如何通过编写函数来简化复杂的问题,并通过合理的输入验证来提高程序的健壮性。

未解决的问题:

尽管我在实验中取得了进步,但在处理大型程序和复杂逻辑时,我仍然感到有些挑战。我还需要进一步学习如何组织代码结构,以及如何更有效地使用高级Python特性,如列表推导式、生成器表达式和装饰器。

改进的方法:

的Python代码,特别是那些开源项目和专业代码库,以学习更优秀的编程实践。

参与更多的编程练习和项目,以提高解决实际问题的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中电金信:产教联合共育人才 AFAC2024金融智能创新大赛启动

当前&#xff0c;人工智能技术正在蓬勃发展&#xff0c;引领着各行各业迈向智能化的新纪元&#xff0c;特别是在金融科技领域&#xff0c;伴随人工智能技术的不断迭代与突破&#xff0c;金融服务的边界也在不断拓展&#xff0c;传统的金融业态正经历着深刻的变革与重塑。 与此同…

crossover软件安装程序怎么安装 Crossover for Mac切换Windows系统 crossover软件怎么样

CrossOver Mac版是专为苹果电脑用户打造的一款实用工具&#xff0c;这款工具主要方便用户在Mac上运行windows系列的应用程序&#xff0c;用户不需要安装虚拟机就可以实现各种应用程序的直接应用&#xff0c;并且可以实现无缝集成&#xff0c;实现跨平台的复制粘贴和文件互通等&…

【漏洞复现】海康威视综合安防管理平台 多处 FastJson反序列化RCE漏洞

0x01 产品简介 海康威视综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备。海康威视集成化综合管理软件平台,可以对接入的视频监控点集中管理,实现统一部署、统一配置、统一管理和统一调度。 0x02 漏洞概述 由于…

系统思考—啤酒游戏沙盘

10个智商120的‮组人‬成‮团的‬队&#xff0c;大‮的家‬集体智‮是商‬多少&#xff1f; 在‮期长‬辅‮各导‬种‮业企‬的‮程过‬中&#xff0c;我‮经们‬常‮察观‬到&#xff0c;虽‮每然‬个‮门部‬都‮力努‬解决‮己自‬的问题&#xff0c;但‮司公‬整体的‮收应…

长文预警:九头蛇的进化——Tesla AutoPilot 纯视觉方案解析

九头蛇的进化&#xff1a;Tesla AutoPilot 纯视觉方案解析 前言 本文整理自原文链接&#xff0c;写的非常好&#xff0c;给了博主很多启发&#xff0c;投原创是因为平台机制&#xff0c;希望能被更多人看到。 嘿嘿&#xff0c;漫威粉不要打我←_←不是Hail Hydra&#xff0c…

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码&#xff0c;更新时间为5.1号 2024/05/01&#xff1a; 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…

83页 | 2024数据安全典型场景案例集(免费下载)

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;

Pico4 MR Unity零基础开发之获取手柄按键

一、导入示例资源 1、打开Package Manager面板&#xff0c;导入示例资源。 2、打开示例场景&#xff0c;方面后面测试。 二、打开 XRI Default Input Actions 三、设置XRI Default Input Actions 面板参数 1、点击号新增一项&#xff0c;重命名为Pico 2、新增并重命名Action …

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

毫米波雷达阵列天线设计综合1(MATLAB仿真)

1 天线设计目标 毫米波雷达探测目标的距离、速度和角度&#xff0c;其中距离和角度和天线设计相关性较强。天线增益越高&#xff0c;则根据雷达方程可知探测距离越远&#xff1b;天线波束越窄&#xff0c;则角度分辨率越高&#xff1b;天线副瓣/旁瓣越低&#xff0c;则干扰越少…

[office] excel怎么设置图表格式- excel中chart tools的使用方法 #笔记#经验分享#其他

excel怎么设置图表格式? excel中chart tools的使用方法 excel怎么设置图表格式&#xff1f;excel中的数据可以制作成图表&#xff0c;在出啊如图表以后可以再图表总使用命令对其格式进行设置&#xff0c;下面我们就来看看excel中chart tools的使用方法&#xff0c;需要的朋友可…

libgdx ashley框架的讲解

官网&#xff1a;https://github.com/libgdx/ashley 我的libgdx学习代码&#xff1a;nanshaws/LibgdxTutorial: libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程&#xff0c;帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并…

position的sticky与fixed 及固定上部分页面 使用举例

fixed&#xff08;固定定位&#xff09; 生成绝对定位的元素&#xff0c;相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。可通过z-index进行层次分级。 sticky position属性中最有意…

【LLM】度小满金融大模型技术创新与应用探索

note 从通用大模型到金融大模型金融大模型的训练技术创新金融大模型的评测方法创新金融大模型的应用实践创新总结&#xff1a;金融大模型迭代路径 一、轩辕大模型 二、垂直大模型训练 1. 数据准备 数据质量是模型效果的保障。首先数据要丰富&#xff0c;这是必备的条件。我们…

OpenAI新成果揭秘语言模型神经活动:稀疏自编码器的前沿探索

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

尝试使用blazor(一)吐槽blazor,未开始之前,先吐为敬

为什么要写一点关于blazor的文章呢?其实是没什么人看的&#xff0c;我知道blazor目前在国内使用的人数&#xff0c;恐怕一辆大巴车都坐不满。非常冷门&#xff0c;我刚用blazor遇到问题&#xff0c;花钱找人解决&#xff0c;找了国内几个著名的平台&#xff0c;几乎没人会blaz…

【Redis】Redis主从复制(一)————主从搭建

目录 背景主从复制主从复制的工作流程主从复制的优点 配置 redis 主从结构复制配置文件&#xff0c;修改配置主从结构启动 redis 服务备注 查看复制状态 背景 单节点服务器的问题问题&#xff1a; 可用性&#xff1a;如果这个机器挂了&#xff0c;意味着服务就中断了.性能&am…

探索智慧林业系统的总体架构与应用

背景&#xff1a; 随着人们对森林资源保护和管理的重视&#xff0c;智慧林业系统作为一种新兴的林业管理手段&#xff0c;正在逐渐受到广泛关注和应用。智慧林业系统的总体架构设计与应用&#xff0c;将现代信息技术与林业管理相结合&#xff0c;为森林资源的保护、管理和利用…

创建目录

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;os模块提供了两个创建目录的函数&#xff0c;一个用于创建一级目录&#xff0c;另一个用于创建多级目录。 &#xff08;1&am…

超详解——深入详解Python基础语法——小白篇

目录 1 .语句和变量 变量赋值示例&#xff1a; 打印变量的值&#xff1a; 2. 语句折行 反斜杠折行示例&#xff1a; 使用括号自动折行&#xff1a; 3. 缩进规范 缩进示例&#xff1a; 4. 多重赋值&#xff08;链式赋值&#xff09; 多重赋值的应用&#xff1a; 5 .多…