Python经典练习题(三)

2023-09-22 15:50:39

🍀第一题

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

本题需要我们掌握的知识点在于,判断字符串,是数字还是字母还是啥的,当然在Python内置中几乎都可以找到我们需要的
下表我将介绍一些常用的判断函数

判断函数描述
isalnum()判断是否为字母或数字(字母数字组合)
isalpha()判断是否为字母
isdigit()判断是否为数字
islower()判断是否为小写字母
isupper()判断是否为大写字母
isspace()判断是否为空白字符(空格、制表符、换行符等)
isnumeric()判断是否为数字字符(包括各种数字字符,如Unicode数字字符)
isdecimal()判断是否为十进制数字字符
isidentifier()判断是否为合法的标识符(Python标识符规则,如变量名检查)
# 输入一行字符
input_string = input("请输入一行字符:")

# 初始化统计变量
letter_count = 0
space_count = 0
digit_count = 0
other_count = 0

# 遍历输入字符串中的每个字符
for char in input_string:
    if char.isalpha():  # 判断是否为英文字母
        letter_count += 1
    elif char.isspace():  # 判断是否为空格
        space_count += 1
    elif char.isdigit():  # 判断是否为数字
        digit_count += 1
    else:
        other_count += 1

# 输出统计结果
print(f"英文字母个数:{letter_count}")
print(f"空格个数:{space_count}")
print(f"数字个数:{digit_count}")
print(f"其他字符个数:{other_count}")

运行结果如下在这里插入图片描述


🍀第二题

找出1000以内的所有完数
完整代码如下

def find_perfect_numbers(limit):
    perfect_numbers = []  # 存储完数的列表

    for num in range(2, limit + 1):
        factors = [1]  # 初始化因子列表,并包括1作为第一个因子

        for i in range(2, num // 2 + 1):
            if num % i == 0:
                factors.append(i)  # 将因子添加到列表

        # 检查是否是完数
        if sum(factors) == num:
            perfect_numbers.append(num)

    return perfect_numbers

# 找出1000以内的所有完数
limit = 1000
perfect_numbers = find_perfect_numbers(limit)

# 输出结果
print(f"1000以内的完数有以下{len(perfect_numbers)}个:")
print(perfect_numbers)

运行结果如下
在这里插入图片描述
我们可以一步一步分析上述代码

我们首先定义了一个名为 find_perfect_numbers 的函数,该函数接受一个参数 limit,用于指定查找完数的上限。同时,我们初始化一个空列表 perfect_numbers 用于存储找到的完数。

接下来,我们使用一个 for 循环遍历从2到 limit(包括 limit)之间的所有整数。因为1不被视为完数,所以我们从2开始。

对于每个数字 num,我们初始化一个列表 factors,并将1添加为第一个因子。1 是每个正整数的因子,所以我们将它包含在列表中。

然后,我们使用另一个 for 循环遍历从2到 num 的一半(包括 num 除以2得到的整数部分)之间的数字。这是因为除了1以外的因子不可能大于 num 的一半。例如,对于数字6,除了1之外的因子最大不可能大于3

在内部循环中,我们检查 num 是否可以被 i 整除,如果可以,就将 i 添加到 factors 列表中,表示 i 是 num 的一个因子。

最后就是判断是不是相等了,然后函数调用了


🍀第三题

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

# 初始高度
height = 100  # 单位:米

# 初始速度(向上)为0
velocity = 0

# 重力加速度
gravity = 9.8  # 单位:m/s²

# 落地和反弹的次数
n = 10

# 初始化总距离
total_distance = 0

# 计算第n次落地时的高度和总距离
for i in range(n):
    # 落地时,更新总距离和高度
    total_distance += height
    height /= 2

    # 计算反弹时的速度
    velocity = (velocity + gravity)**0.5

    # 计算反弹的高度
    height = height + velocity**2 / (2 * gravity)

# 输出结果
print(f"第{ n }次落地时,共经过 { total_distance } 米")
print(f"第{ n }次反弹的高度为 { height } 米")

运行结果如下
在这里插入图片描述

自由落体运动的位移公式:这个公式用于计算物体在自由落体运动中的位移。对于球从初始高度h自由落下的情况,位移d可以通过以下公式计算:
在这里插入图片描述

其中,d是位移,g是重力加速度(9.8 m/s²),t是时间。

对于球的反弹运动,我们在计算高度时使用了这个公式。

速度的变化公式:在物理中,速度的变化与时间和加速度有关。我们使用以下公式来计算速度的变化:

在这里插入图片描述

其中,vf​是最终速度,vi​是初始速度,a是加速度(重力加速度),t是时间。

这个公式在计算每次反弹后速度的变化时使用。

在代码中,我们使用这些物理公式来模拟球的自由落体和反弹过程。首先,我们计算每次落地后的位移和速度,然后将其用于计算下次反弹的高度。这样,我们可以迭代地计算球的运动状态,直到第10次落地为止。


请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

更多推荐

分布式系统的 38 个知识点

天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢?1.架构设计这一节将从一些经典的开源系统架构设计出发,来看一下,如何设计一个高质量的分布式系统;而一般的设计出发点,无外乎冗余:简单理解为找个备胎,现任挂掉之后,备胎顶

Layui快速入门之第十一节 弹出层

目录一:基本用法API打开弹层基础属性弹出信息框弹出询问框弹出提示框弹出加载层弹出贴士层弹出输入框弹出图片层弹出标签层关闭弹层关闭所有层关闭最近一次打开的层2.8+全局配置默认属性样式初始化就绪重新设置弹层样式设置弹层的标题获取iframe页中的元素在iframe页中获取弹层索引设置iframe层高度自适应重新设置if

go-GC垃圾回收

GCGC是自动化内存管理回收机制虚拟内存函数栈的数据是会根据函数返回而自动销毁的,而堆上的数据是不会随着函数自动销毁的,堆内数据会随着程序运行而逐渐变大,从而导致内存OOM,Go语言就用了GC来清理堆上的内存数据。如何区分垃圾堆上内存数据不在被栈上和数据段上的引用变量所指向,那就一定是内存垃圾。这个原理称为"可达性",

PostgreSql 统一修改date字段为timestamp

在《Powdersigner+PostgreSql同步表结构到pg数据库》中,导入表结构到pg数据后,发下时间对不上了。mysql的datetime转换后pg的变成了date了。再同步到数据后,就变成日期类型了。因为表中基本都有创建时间和修改时间,两个相对固定的字段,因此想做一个统一的处理。把《postgreSql使用

租用好服务器后怎么操作?

很多企业咨询完租用好服务器后都会有一些不知所措,不知道改如何操作,今天小编就跟大家讲一讲租用好服务器后要进行以下几个注意事项。修改系统以后要尽快修改服务器的密码,租用服务器后正规的IDC服务器商是会自主完成这一步骤的,重做系统后修改好的服务器密码一定要保存好。不随意下载。不能像普通电脑一拿到手就开始立刻下载各种软件、A

Lua学习笔记:词法分析

前言本篇在讲什么Lua的词法分析本篇需要什么对Lua语法有简单认知对C++语法有简单认知依赖VisualStudio工具本篇的特色具有全流程的图文教学重实践,轻理论,快速上手提供全流程的源码内容★提高阅读体验★👉♠一级标题👈👉♥二级标题👈👉♣三级标题👈👉♦四级标题👈目录♠前言♠luaL_dofile♠保

【STL容器】list

文章目录一、list定义二、list的迭代器三、list的元素操作四,list的优缺点一、list定义list本质是一个双向带头循环链表template<classT>structlist_node{list_node*prev;Tval;list_node*next;};template<classT>classli

数据结构与算法(C语言版)P3.2---链表之带头双向循环链表的实现

1、前言前面一章详细介绍了链表的概念、结构以及分类。并且实现了无头单向非循环链表。这一篇主要实现带头双向循环链表的。由于需要串联前面的知识,把上一篇至此:链表之无头单向非循环链表的实现2、带头双向循环链表的特性和结构2.1、结构(1)、每个结点有两个指针域(next,prev),一个数据域(data)。(2)前面结点的

cms之帝国cms安装

内容摘要帝国网站管理系统,英文名称为EmpireCMS,简称“帝国CMS”,本文将介绍帝国网站管理系统的安装方法。前言:本文安装教程是以帝国CMS7.5版本为基础进行图文讲解。各位看官,一定要按照每个步骤去执行,技术是以熟能生巧为主,在学习的过程中,要认真仔细的去做好每一步。关注我,手把手帮你搭建自己的小窝一、安装前准

Spring源码分析(三) IOC 之 getBean()和doGetBean()

b、在中篇会正式经历一套生命周期流程getBean()->doGetBean()->createBean()->doCreateBean()->createBeanInstance()->populateBean()->initializeBean()流程1、AbstractBeanFactory#getBean()此

计算机遇到MSVCP140.dll丢失问题?全面分析解决方案

今天我要和大家分享的主题是:计算机中丢失MSVCP140.dll的解决方法。在我们日常使用电脑的过程中,经常会遇到一些棘手的问题,而MSVCP140.dll文件丢失就是其中之一。这个问题可能会给我们的工作、学习和娱乐带来诸多不便,因此我希望通过今天的演讲,能够帮助大家解决这个问题。首先,让我们来了解一下什么是MSVCP

热文推荐