Python开发与应用实验2 | Python基础语法应用

news2024/10/6 4:14:26

 *本文是博主对学校专业课Python各种实验的再整理与详解,除了代码部分和解析部分,一些题目还增加了拓展部分(⭐)。拓展部分不是实验报告中原有的内容,而是博主本人自己的补充,以方便大家额外学习、参考。

(本文分步更新,先更新代码部分,再更新解析部分。如果打开文章发现只有代码没有解析,说明还没更新完毕,可以过一阵子再来参考~)

目录

一、实验目的

二、实验内容

1、学生宿舍信息输入

2、超市抹零

3、个人用户登录

4、模拟斐波那契数列输出

5、银行金额大写汉字转换

6、天天向上的力量

7、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

8、一个雇员一周的总薪水

9、水仙花数是3位整数(100-199),它的各位数字立方和等于该数本身。请编写程序。

 10、过滤敏感词

三、实验总结(将于本学期结束后补充)



一、实验目的

(1)能够使用分支结构和循环结构编写简单程序;

(2)能够使用math库进行简单的数值计算;

(3)通过设计型实验方式,结合具体的应用场景和业务需求,引导学生进行关键的技术分析,帮助学生理清编程思路,最后熟练运用 Python 语言进行程序设计,培养的了学生针对一般问题自主进行分析问题和解决问题的能力。


实验内容

1、学生宿舍信息输入

模拟学生宿舍信息输入,需要输入学生个人信息 姓名、性别、年龄、宿舍号、学院、专业、电话信息,并输出显示。

源代码:

def input_student_info():
    name = input("请输入学生姓名:")
    gender = input("请输入学生性别:")
    age = input("请输入学生年龄:")
    dormitory_number = input("请输入学生宿舍号:")
    college = input("请输入学生学院:")
    major = input("请输入学生专业:")
    phone = input("请输入学生电话:")

    student_info = {
        "姓名": name,
        "性别": gender,
        "年龄": age,
        "宿舍号": dormitory_number,
        "学院": college,
        "专业": major,
        "电话": phone
    }

    return student_info

def display_student_info(student_info):
    # 输出学生信息
    print("学生信息如下:")
    for key, value in student_info.items():
        print(f"{key}: {value}")


if __name__ == "__main__":
    student_info = input_student_info()
    display_student_info(student_info)

列出测试数据和实验结果截图:


2、超市抹零

逛超市购物结账的时候,商家都会给顾客回馈一张清单小票,票面上的金额往往会精确到角或分。大部分商家通常会采用四舍五入的原则进行结算,不过有些商家为了让利顾客,会将小数点后面的数字金额全部抹零。下面使用数字类型转换实现收银抹零行为。

源代码:

amount = float(input("请输入购物金额(可以包含小数点):"))
rounded_amount = int(amount)
print(f"抹零后的金额为:{rounded_amount}元")

列出测试数据和实验结果截图:


3、个人用户登录

当用户登录时给3次机会。如果成功,显示欢迎xxx。如果登录失败,显示录入错误你还有x次机会。如果3次机会使用完毕,则显示登录超限,请明天再登录。

源代码:

def login(username, password):
    correct_username = "user"  # 正确的用户名
    correct_password = "123"  # 正确的密码

    if username == correct_username and password == correct_password:
        return True
    else:
        return False


def main():

    login_attempts = 3  # 允许尝试d 次数

    while login_attempts > 0:
        username = input("请输入用户名:")
        password = input("请输入密码:")
        if(login(username,password)):
            print(f"欢迎{username}!")
            break
        else:
            login_attempts -= 1
            if login_attempts > 0:
                print(f"登录错误,你还有 {login_attempts} 次机会。")
            else:
                print("登录超限,请明天再登录。")



if __name__ == "__main__":
    main()

列出测试数据和实验结果截图:


4、模拟斐波那契数列输出

用户输入指定的数列范围,正确输出结果。

源代码:

def fib(n):
    a, b = 0, 1
    result = []

    for _ in range(n):
        result.append(a)
        a, b = b, a + b

    return result


if __name__ == "__main__":
    n = int(input("请输入要生成的斐波那契数列项数:"))
    sequence = fib(n)
    print(f"斐波那契数列前 {n} 项为:{sequence}")


5、银行金额大写汉字转换

银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字。目前只需完成1~5位整数转换即可。

源代码:

def number_to_chinese(number):
    if number == 0:
        return "零"

    chinese_dict = {
        0: "零",
        1: "壹",
        2: "贰",
        3: "叁",
        4: "肆",
        5: "伍",
        6: "陆",
        7: "柒",
        8: "捌",
        9: "玖"
    }

    unit_dict = {
        0: "",
        1: "拾",
        2: "佰",
        3: "仟",
        4: "万"
    }

    result = []
    position = 0

    while number > 0:
        digit = number % 10
        if digit != 0:
            result.append(chinese_dict[digit] + unit_dict[position])
        else:
            # 零
            if result and result[-1] != "零":
                result.append("零")

        number //= 10
        position += 1

    return "".join(result[::-1])


if __name__ == "__main__":
    number = int(input("请输入金额(1-5位整):"))
    if 1 <= number <= 99999:
        chinese_amount = number_to_chinese(number)
        print(f"大写汉字金额:{chinese_amount}")
    else:
        print("非法!")

列出测试数据和实验结果截图:


6、天天向上的力量

一年365天,每天进步1‰,累计进步多少?如果每天退步1‰,累计剩下多少?如果以3天打鱼2天晒网的学习态度持续学习一年,学习效果如何?

源代码:

def calculate():
    increase_rate = 0.001

    total_increase = (1 + increase_rate) ** 365
    total_decrease = (1 - increase_rate) ** 365

    return total_increase, total_decrease


def main():
    total_increase, total_decrease = calculate()

    print(f"每天进步1‰,一年的累计:{total_increase:.2%}")
    print(f"每天退步1‰,一年的累计:{total_decrease:.2%}")


if __name__ == "__main__":
    main()

列出测试数据和实验结果截图:


7、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

源代码:

import math

def func():
    for x in range(1, 10000):
        y = x + 100
        z = y + 168

        if math.sqrt(y).is_integer() and math.sqrt(z).is_integer():
            return x

    return None

def main():
    result = func()
    if result is not None:
        print(f"整数是:{result}")
    else:
        print("未找到")

if __name__ == "__main__":
    main()

列出测试数据和实验结果截图: 


8、一个雇员一周的总薪水

一个雇员一周的总薪水,等于其每小时的时薪,乘以其一周工作的正常小时数,再加上加班费。加班费等于总的加班时间,乘以每小时薪水的1.5倍。

编写一个程序,以每小时的薪水,常规工作时间,加班工作时间作为输入,显示一个雇员的总周薪。按照要求:每周常规工作时间不能超过40小时且不能小于等于0,正常工作时薪不能小于15元。

​源代码:

def func(hourly_wage, regular_hours, overtime_hours):
    if regular_hours > 40 or regular_hours <= 0:
        return "不符合要求"

    if hourly_wage < 15:
        return "每小时薪水不能小于15元"

    regular_salary = hourly_wage * regular_hours
    overtime_salary = hourly_wage * 1.5 * overtime_hours
    total_salary = regular_salary + overtime_salary

    return total_salary


def main():
    hourly_wage = float(input("请输入每小时薪水(元):"))
    regular_hours = float(input("请输入常规工作时间(小时):"))
    overtime_hours = float(input("请输入加班工作时间(小时):"))

    result = func(hourly_wage, regular_hours, overtime_hours)

    if isinstance(result, str):
        print(result)
    else:
        print(f"雇员的总周薪为:{result:.2f}元")


if __name__ == "__main__":
    main()

列出测试数据和实验结果截图: 

 


9、水仙花数是3位整数(100-199),它的各位数字立方和等于该数本身。请编写程序。

​源代码:

def get_number():
    lily_numbers = []

    for number in range(100, 1000):
        digit1 = number // 100
        digit2 = (number // 10) % 10
        digit3 = number % 10

        # 立方和
        sum_of_cubes = digit1 ** 3 + digit2 ** 3 + digit3 ** 3

        # 判断
        if sum_of_cubes == number:
            lily_numbers.append(number)

    return lily_numbers


def main():
    lily_numbers = get_number()

    if lily_numbers:
        print("3位水仙花数有:", lily_numbers)
    else:
        print("未找到3位水仙花数。")


if __name__ == "__main__":
    main()

列出测试数据和实验结果截图: 


 10、过滤敏感词

敏感词一般是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明用语,论坛、网站管理员一般会设定一些敏感词,以防不当发言影响论坛、网站环境。若论坛、网站设置了敏感词,用户编辑的内容又含有敏感词,论坛和网站会将其判定为不文明用语,阻止内容的发送,或使用“*”替换其中的敏感词。

​源代码:

import re


def censor_text(text, sensitive_words):
    censored_text = text

    for word in sensitive_words:
        # 创建正则表达式用的
        pattern = re.compile(re.escape(word), re.IGNORECASE)
        censored_text = pattern.sub('*' * len(word), censored_text)

    return censored_text


def main():
    sensitive_words = ["呵呵", "哈哈", "嘻嘻"]  # 定义敏感词列表
    user_text = input("请输入文本内容:")
    censored_text = censor_text(user_text, sensitive_words)

    if censored_text != user_text:
        print("检测到敏感词,已替换为 '*':")
        print(censored_text)
    else:
        print("文本内容合法,无敏感词。")


if __name__ == "__main__":
    main()

列出测试数据和实验结果截图: 


实验总结(将于本学期结束后补充)

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

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

相关文章

Wespeaker框架训练(1)

1. 数据集准备(Data preparation) 进入wespeaker目录文件/home/username/wespeaker/examples/voxceleb/v2 对run.sh文件进行编辑 vim run.sh 可以看到run.sh里面的配置内容 #数据集下载&#xff0c;解压 stage1 #插入噪音&#xff0c;制作音频文件 stop_stage2 #数据集放置…

如何重装Windows Mirosoft Store

重装Windows Mirosoft Store 如何重装Windows Mirosoft Store呢&#xff1f;如何下载Windows Mirosoft Store呢&#xff1f;Windows Mirosoft Store不见了咋办&#xff1f;Windows 自带软件不见了咋办等等&#xff1f;写在前面 1.文件准备2.安装 如何重装Windows Mirosoft Stor…

Java之序列化的详细解析

3. 序列化 3.1 概述 Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象&#xff0c;该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后&#xff0c;相当于文件中持久保存了一个对象的信息。 反之&#xff0c;该字节…

vue做无缝滚动

类似于这种&#xff1a; 以上截图来自于官网&#xff1a;vue-seamless-scroll 具体使用步骤为&#xff1a; 1:安装 cnpm install vue-seamless-scroll --save  2&#xff1a;引入 <vue-seamless-scroll></vue-seamless-scroll>import vueSeamlessScroll from …

最熟悉的陌生人!Java运算符详解

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、算术运算符1、四则运算符2、增量运算符3、自增、自减运算符 二、关系运算符三、关系运算符1、逻辑与 &&2、逻辑或|…

【PDF提取页面】使用Adobe Acrobat提取PDF文档的某几个页面另存

▚ 01 使用Adobe Acrobat打开目标文件 ▚ 02 打开 ->页面缩略图Page Thumbnails ▚ 03 右键选择 -> 提取页面 Extract Pages… ▚ 04 选择提取的页数范围 &#x1f341; 一般设置提取页面的初始位置和截至位置即可。 ▚ 05 将提取的目标页面另存为->新PDF文

基于微信小程的流浪动物救助宠物领养平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

05_JavaScript基本语法

1 变量 1.1 标识符 程序开发中&#xff0c;经常需要自定义一些符号来标记一些名称&#xff0c;并赋予其特定的用途&#xff0c;如变量名、函数名等&#xff0c;这些符号都被称为标识符。 定义规则 由大小写字母&#xff08;A-Z,a-z&#xff09;、数字&#xff08;0-9&#…

[docker]笔记-网络故障处理

1、同事在虚拟机上部署docker&#xff0c;发现电脑无法登录虚拟机了。首先ping测是通的&#xff0c;从我电脑继续进行登录测试发现没问题&#xff0c;初步判断是她电脑网络和虚拟机网络之间连接出错。 2、进行虚拟机登录查看&#xff0c;首先使用route -n命令查看路由&#xf…

Java深入理解线程的三大特性

目录 1 CPU缓存导致可见性问题2 线程切换导致原子性问题3 性能优化导致有序性问题4 JMM(Java Memory Model)5 volatile6 synchronized 1 CPU缓存导致可见性问题 线程的三大特性&#xff1a; 可见性&#xff1a;Visibility有序性&#xff1a;Ordering原子性&#xff1a;Atomic…

YApi Pro

1.介绍 说明&#xff1a;YApi Pro 是一款高效、易用、功能强大的 API 管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务。它可以帮助开发者轻松创建、发布、维护 API&#xff0c;同时为用户提供了优秀的交互体验&#xff0c;开发人员可以更加高效地完…

【面试算法——动态规划 19】最长回文子序列 (hard)让字符串成为回文串的最少插入次数

516. 最长回文子序列 链接: 516. 最长回文子序列 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&…

C语言实现八种功能的通讯录(添加、删除、查找、修改、显示、排序、退出、清空)

通讯录功能概要及前提说明 此通讯录利用C语言完成&#xff0c;可以实现八种功能的通讯录&#xff08;添加、删除、查找、修改、显示、排序、退出、清空&#xff09; 代码由三部分组成&#xff0c;为什么要写成三部分而不写成一部分可以参考我以前的博客&#xff0c;如下&…

【Linux】Linux多线程

怎么理解线程线程的优缺点线程的二级页表线程用途怎么管理线程线程创建获取创建后的ID方法 线程等待线程终止分离线程线程ID及进程地址空间布局 怎么理解线程 通俗易懂的说&#xff0c;线程的运行是必须有进程给它打个基础。线程的运行是服用进程的代码及空间来进行运作的。 那…

[架构之路-223]:数据管理能力成熟度评估模型DCMM简介

目录 一、背景 二、评估依据 三、评估内容 四、主要适用对象 五、能力等级 六、不同层次的文件&#xff1a; 一、背景 信息技术与经济社会的交汇融合引发了数据爆发式增长。数据蕴含着重要的价值&#xff0c;已成为国家基础性战略资源&#xff0c;正日益对全球生产、流通…

会声会影和pr哪个好用? 2023年最新功能介绍解析

随着抖音、快手、B站等视频平台的普及&#xff0c;每个人都能成为视频创作者&#xff0c;视频剪辑软件成为自媒体创作的必备工具。一些新入门视频剪辑的小伙伴可能会疑惑&#xff0c;会声会影和PR软件哪个好呢&#xff1f;今天我将从核心功能、稳定性和性价比三个方面&#xff…

从中序遍历和后序遍历构建二叉树

题目描述 106. 从中序与后序遍历序列构造二叉树 中等 1.1K 相关企业 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1…

腾讯Mini项目课程前置学习笔记(第一轮)

Mini项目课程前置学习笔记&#xff08;第一轮&#xff09; 时间&#xff1a;5.20 ~ 5.23 项目基本介绍 项目 B. 指标监控服务重构 指标的收集与展示是后台系统监控中非常重要的一环&#xff0c;很可惜大而全的全链路监控方案并不适合我们&#xff0c;于是就有了本 mini 项目。…

cesium在vue中引入报错

npm install cesium1.95.0 找了很久各种办法都用了 最后就是降到这个版本。 在main.js中这样引入就可以运行起来了 import * as Cesium from cesium/Build/Cesium/Cesium.js; import cesium/Build/Cesium/Widgets/widgets.css; Vue.prototype.cesiumCesium 没出来是因为这个…

根据表名称快速查询表所有字段是否包含特定数据筛选

当前需要清理某个表中所有字段&#xff0c;检查是否有包含DEl字符的脏数据&#xff0c;如果字段比较少的直接根据字段查询即可&#xff0c;但是如果有几十个字段的话&#xff0c;逐个检查会很慢。 当前使用的方式是&#xff1a; 1&#xff1a;根据表名称获取当前表所有的字段 …