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

实验目的

  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:breaklst[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或noif flag.lower() not in ('yes', 'no'):print("只能输入yes或no")else:breakif flag.lower() == 'no':  # 如果用户选择'no',则结束循环breakif numbers:  # 如果列表不为空,计算平均分average = sum(numbers) / len(numbers)print(f"所有成绩的平均分是:{average:.2f}")
else:print("没有输入任何成绩。")

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

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

参考代码:

程序代码:

from random import randintdef 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!')breakelif 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] * 4for 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 digitsdef func1(text):# 转换为集合,去重result = set(text)# 按其在原字符串中的先后顺序,把集合里的字符连接为字符串result =''.join(sorted(result, key=text.index))return resultdef 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 operatordef 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.mzph.cn/news/851549.shtml

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

相关文章

SpringAI--使用免费API-Key和API进行配置

目录 &#x1f4da; 前言 &#x1f4d1;Spring AI简介 &#x1f4ac; 项目配置 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 编写Controller控件 &#x1f4da; 前言 &#x1f4d1;博客主页&#xff1a;丘比特惩罚陆 &#x1f496;欢迎关注&#xff1a;点赞收藏⭐留言✒…

【Vue】getters

除了state之外&#xff0c;有时我们还需要从state中筛选出符合条件的一些数据&#xff0c;这些数据是依赖state的&#xff0c;此时会用到getters getters就类似于属性中的计算属性 这个getter只有获取&#xff0c;如果需要设置修改&#xff0c;还是需要经过mutations getters里…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

如何使用Python在word文档中创建表格

如何使用Python在word文档中创建表格 介绍效果代码 介绍 本文将介绍如何使用Python库python-docx在Word文档中创建表格。 效果 插入表格前的word文档&#xff1a; 插入表格后的word文档&#xff1a; 代码 from docx import Document# 加载现有的Word文档 doc Document(…

【护网简历模版】改了10个在校大学生的简历的感想

护网简历模版 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 在上篇文章中&#xff1a;如何面试…

前端JS必用工具【js-tool-big-box】学习,获取当前浏览器向上滚动还是向下滚动,获取当前距离顶部和底部的距离

这一小节&#xff0c;我们说一下 js-tool-big-box 添加的最新工具方法&#xff0c;在日常前端开发工作中&#xff0c;如果网页很长&#xff0c;我们就需要获取当前浏览器是在向上滚动&#xff0c;还是向下滚动。如果向上滚动&#xff0c;滚动到0的时候呢&#xff0c;需要做一些…

建筑二建考试试题及答案,分享几个实用搜题和学习工具 #微信#经验分享

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.掌上识别王 一个可以快速纸质书籍上内容扫描成电子档的工具&#xff0c;为了方便大家快速搜…

好用的Web数据库管理工具SQLynx

SQLynx 是一款功能强大且用户友好的 Web 数据库管理工具&#xff0c;原生支持个人和企业用户&#xff0c;专为简化数据库管理和操作而设计。 目录 1 主要特点 2 优势 3 典型使用场景 4 示例 5 结论 SQLynx原名SQL Studio&#xff0c;产品100%自主研发&#xff0c;无任何开…

OSI七层网络参考模型

一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1&#xff0c;0或1就叫做比特&#xff0c;物理层就是把这些比特用不同的媒介传输出去&#xff0c;可以用电、光或者其他形式的电磁波来表示和传输信号&#xff0c;数据从网络接口出去以后&#xff0c;会经过不同的网…

dat.gui图形用户页面

一、导入 1.npm安装 npm install --save dat.gui 引入&#xff1a; // CommonJS: const dat require(dat.gui); // ES6: import * as dat from dat.gui; const gui new dat.GUI(); 二、控制器 <!DOCTYPE html> <html lang"en"> <head><…

【重磅开源】MapleBoot权限控制使用介绍(菜单权限、按钮权限、数据权限)

基于SpringBootVue3开发的轻量级快速开发脚手架 ## &#x1f341;项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒&#xff0c;终有春日&#…

【深度学习】Loss为Nan的可能原因

文章目录 1. 问题情境2. 原因分析3. 导致Loss为Nan的其他可能原因 1. 问题情境 在某个网络架构下&#xff0c;我为某个数据项引入了一个损失函数。 这个数据项是nn.Embedding类型的&#xff0c;我加入的损失函数是对nn.Embedding空间做约束。 因为我在没加入优化loss前&#x…

C# WPF入门学习主线篇(八)—— ListBox常见属性和事件

C# WPF入门学习主线篇&#xff08;八&#xff09;—— ListBox常见属性和事件 欢迎来到C# WPF入门学习系列的第八篇。在前面的文章中&#xff0c;我们已经探讨了WPF中的Button、TextBox和Label控件的使用。今天&#xff0c;我们将深入了解WPF中的另一个常用控件——ListBox。本…

Pulsar 社区周报 | No.2024-06-07 | Apache Pulsar 新分支 3.3 版本发布

“ 各位热爱 Pulsar 的小伙伴们&#xff0c;Pulsar 社区周报更新啦&#xff01;这里将记录 Pulsar 社区每周的重要更新&#xff0c;每周发布。 ” 本期主题&#xff1a;Apache Pulsar 新分支 3.3 版本发布 Apache Pulsar 新分支 3.3 版本发布&#xff1a;Apache Pulsar 3.3.0[1…

必备:产品经理工作文档大全

产品经理&#xff08;英文&#xff1a;Product manager&#xff0c;缩写&#xff1a;PM&#xff09;也称产品企划&#xff0c;是指在公司中针对某项或某类的产品进行规划和管理的人员&#xff0c;主要负责产品的研发、制造、营销、渠道等工作。 产品经理是很难定义的一个角色&a…

DeepSORT(目标跟踪算法)中的数值表格与调参的关系

DeepSORT&#xff08;目标跟踪算法&#xff09;中的数值表格与调参的关系 flyfish DeepSORT&#xff08;目标跟踪算法&#xff09;中的马氏距离详解&#xff08;很详细&#xff09; DeepSORT&#xff08;目标跟踪算法&#xff09;中 可以设置阈值进行异常检测或目标跟踪的原…

问题:在信息点统计表中,对于没有信息点的工作区或者房间填写,表明已经分析过该区域 #微信#职场发展#职场发展

问题&#xff1a;在信息点统计表中,对于没有信息点的工作区或者房间填写,表明已经分析过该区域 参考答案如图所示

学历还算能力的一部分吗(机器人方向)

前篇 在人工智能时代&#xff0c;学历还算是能力的一部分吗&#xff1f; 之前写过一篇&#xff0c;现在感觉应该是不严谨&#xff0c;不准确的。 AI如何看待能力&#xff0c;学历&#xff0c;文凭-CSDN博客 那一篇讨论了&#xff1a;{文凭}⊂{学历}⊂{能力} 本篇 不合格且…

【Echarts系列】带图片的饼图

【Echarts系列】带图片的饼图 序前提说明示例数据格式代码动态旋转图片 序 为了节省后续开发学习成本&#xff0c;这个系列将记录我工作所用到的一些echarts图表。 前提说明 因为饼图中间需要添加图片&#xff0c;所以比较特殊&#xff0c;对于饼图中间数据的对齐很容易出现…

正大国际期货:原油投资出现亏损的五种心理弱点

在原油投资当中&#xff0c;有五种心理弱点最容易导致投资者失败&#xff0c;必须注意加以克服! 盲目胆大心理。 有些投资者从未认真系统地学习过投资理论技巧&#xff0c;也没有经过任何模拟训练&#xff0c;甚至连最起码的投资基础知识都不明白&#xff0c;就贸然的进入原油…