Python 有趣的几个案例

1 有趣的回文数

**题目需求:**对于任何自然数,将它自身和它的倒序数(反转过来)相加,再将得到的和与它的倒序数相加,一直重复,最终总会得到一个回文数。

提示;回文数,如 12321 就是回文数,从左向右或从右向左是同一个数字。

样例描述:

  • 比如12+21=33,12 这个数只需要一步就能得到回文数。

  • 再比如 265 这个数:
    265+562=827
    827+728=1555
    1555+5551=7106
    7106+6017=13123
    13123+32131=45254 最终数字也是回文数字。

请编写代码验证任意自然数字经过上述操作后也会得到一个回文数。

解题流程:

此题有 2 个核心逻辑:

  1. 如何获取一个数字的反转数。最简单的方案就是使用字符串的切片功能。
  2. 如何判断一个数字是不是回文数,把自己和反转后的数字比较,如果相等说明是回文数,否则不是。

解决方案一:

# 接收用户输入数字,把数字当成字符串类型,以便使用节片功能
num = input("请输入一个数字:")
old_num = num
while True:# 使用切片反转num_rev = num[::-1]# 原数字和反转数字相加,需要转换成数字num_sum = int(num) + int(num_rev)# 判断是不是回文数,因为要使用切片,再次转换成字符串if str(num_sum) == str(num_sum)[::-1]:print(old_num, "最终得的回文数是", num_sum)breakelse:#继续num = str(num_sum)

思维扩展:

反转数字的逻辑:

# 功能:反转用户输入的数据
num=int(input('请输入一个数字'))
#保存反转后的数字
reverse_num=0
while num>0:temp=num % 10reverse_num=reverse_num*10+tempnum=num // 10
print(reverse_num)

回文数的逻辑:

# 功能:反转用户输入的数据
num=input('请输入一个数字')
left =0
right=len(num)-1
is_hw=Truewhile left<right:if int(num[left])==int(num[right]):left+=1right-=1else:is_hw=Falsebreak
if is_hw:print(num,"是一个回文数!")
else:print(num,"不是一个回文数!") 

2. 圣经数 153

**题目需求:**任找一个 3 的倍数,把各位数字的立方相加,得出和,再把和的各位数字立方后相加,如此反复进行,最后必然出现“圣经数”(153)

如:24 是 3 的倍数,按照上述规则,进行变换的过程是:
24→2³+4³→(72)→7³+2³→(351)→3³+5³+1³→153

请编写程序证明用户输入的任一个数字经过上述的操作后最后会得到圣经数(153) 。

解题流程:

本题目的核心逻辑:如何分解数字的每一位,并求数字的立方和。

num = input("请输入一个 3 的倍数:")
old_num = num
if int(num) % 3 == 0:# 数字必须能被 3 整除,分解,并求分解后数字的立方while True:# 保存相加结果s = 0for i in num:# 注意,转换成 ints += int(i) ** 3if s == 153:print(old_num, "最终可以演变成圣经数 153")breakelse:# 继续num = str(s)

3. 以文件方式保存个人信息

把自己的家人的信息以文件的方式保存。把自己的成绩信息保存在文件中

本题主要是考核学生对文件读写知识的掌握程度。

with open("d:/self.txt",w) as f:f.write("姓名:张三")f.write("\n")f.write("年龄:20")

4. 求解因子

输入一个数字,并求解出此数字的所有因子,如 6的因子是 1,2,3,6 因子指能被数字整除的数字 。

num = int(input("请输入一个数字:"))
for i in range(1, num + 1):if num % i == 0:print(i)

5. 求平均分

一个班上有 5名学生,请编写程序输入 5 名学生的成绩并求解这 5 名学生的总分、平均分。

# 保存总分
s = 0
for i in range(5):score = int(input("请输入学生成绩:"))s += score
print("总分:", s)
print("平均分:", s / 5)

6. 求解分数相加

求解 1/2+2/3+3/4+4/5+5/6+6/7……99/100 的值

此题本质还是累加运算。观察后会发现,分子的变化是从 1 ~ 99,分母变化是从 2 ~ 100 。

s = 0
fz = 1
fm = 2
while fz <= 99:s += fz / fmfz += 1fm += 1
print("结果:", s)

题目演变:

1/2-2/3+3/4-4/5+5/6-6/7……99/100!

s=1/2
fz=2
fm=3
fh=1
for i in range(99):s+=(fz/fm)*fhfz+=2fm+=2# 1 -1 fh=-fhprint(fh)
print(s)

7. 随机数求和

题目需求:使用随机模块随机生成 20 个1~100之间的数字,并求解这20个数字相加的结果。

本题还是累加运算,只是累加数字来源来随机数。

import random
s = 0
for i in range(20):s += random.randint(1, 100)
print(s)

第二种解决方案:

和第一种方案比较,随机数的生成方式不同。

import random
s = 0
for i in range(20):s += int(random.random()*1000) % 100 +1
print(s)

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

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

相关文章

GUI的简单概述和基本使用

GUI的概念 1&#xff0c;到目前为止&#xff0c;我们编写的都是控制输入的程序&#xff0c;操作使用非常不直观&#xff0c;采取一直方式让效果呈现在窗口上。 2&#xff0c;GUI及图形界面指采用图像方式显示的用户界面&#xff0c;与早期计算机的命令行界面相比&#xff0c;…

p标签显示不全并且实现自动换行

之前的代码 发现效果是这样的 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5561e9dbe4b64cf49c85fcbac3f2c7c8.png) # 修改 添加word-wrap: break-word;"实现自动换行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/59a9b5ef89eb4d0dbeae1cae…

【SpringCloud】通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题

文章目录 前言1.第一次尝试1.1服务被调用方更新1.2压测第一次尝试1.3 问题分析1.4 同步的不是最新列表 2.第二次尝试2.1调用方过滤下线服务2.2压测第二次尝试2.3优化 写到最后 前言 在上文的基础上&#xff0c;通过压测的结果可以看出&#xff0c;使用DiscoveryManager下线服务…

程序员如何开发高级python爬虫?

之前我有写过一篇“高级爬虫和低级爬虫的区别”的文章&#xff0c;我们知道它并非爬虫领域中专用术语。只是根据爬虫的复杂性来断定是否是高级爬虫。以我个人理解&#xff1a;高级爬虫是可能具有更复杂的功能和更高的灵活性的爬虫。下面我们围绕高级爬虫来了解下有趣的事情。 低…

从输入URL到页面加载的全过程

从输入URL到页面加载的全过程 输入URL&#xff0c;并按下回车 浏览器检查浏览器缓存、系统缓存、路由器缓存&#xff0c;如果缓存中有&#xff0c;则直接显示页面&#xff0c;如果没有进行下一步 根据URL通过DNS进行域名解析&#xff0c;获取IP地址 DNS解析过程&#xff1a;是一…

python可视化plotly 图例(legend)设置大全,值得收藏!

文章目录 一、图例(legend)二、update\_layout(legend{}) 相关参数及示例关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python…

多向通信----多人聊天

package 多人聊天; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; publ…

K8s中安装calico一直无法启动成功

问题描述 #k8s版本为v1.20.9查看对应日志 #calico-node-xxx 对应pod名称 kubectl logs calico-node-xxxx -n kube-system #没有错误但是一直启动不起来应该是版本不匹配问题解决方案 删除 calico重新安装对应版本删除podskubectl delete -f calico.yaml删除文件 rm -f calico.…

四步实现企业微信群的裂变增长

在这个流量红利逐渐消失的时代&#xff0c;获取客户变得越来越困难且成本高昂。因此&#xff0c;许多企业和商家开始转向私域流量的开发&#xff0c;以实现客户的持续增长和转化。企业微信作为一种有效的客户管理工具&#xff0c;被广泛用于私域流量的构建和管理。在私域流量的…

传统软件正在颠覆SaaS

曾经&#xff0c;SaaS的口号&#xff1a;“颠覆传统软件”喊得无比响亮。 但传统软件存在了这么多年&#xff0c;必然有其存在的合理性。 而自诩为“互联网公司”的SaaS公司&#xff0c;为了证明自己比传统软件“更先进”&#xff0c;反而犯过不少低级错误。 比如&#xff0…

electron-builder 的基本使用

electron打包说明 打包步骤 step1: 将 index.html 放到 h5 目录中 step2&#xff1a;在h5目录中 执行打包命令 yarn electron-builder打包结果 会生成一个 字里华夏 的目录, 1、cd 到 字里华夏 目录 其中有一个 字里华夏Setup1.2.0.exe文件&#xff0c; 这个是 桌面应用的…

【NLP】如何管理大型语言模型 (LLM)

什么是LLM编排&#xff1f; LLM 编排是管理和控制大型语言模型 (LLM)的过程&#xff0c;以优化其性能和有效性。这包括以下任务&#xff1a; 提示LLM&#xff1a;生成有效的提示&#xff0c;为LLMs提供适当的背景和信息以产生所需的输出。链接LLM&#xff1a; 结合多个LLM的输…

SpringBoot读取properties文字乱码问题及相关问题

问题&#xff1a;在idea的编辑器中properties文件一般用UTF-8编码&#xff0c;SpringBoot2读取解码方式默认不是UTF-8&#xff0c;当值出现中文时SpringBoot读取时出现了乱码。 解决方式1&#xff1a;在SpringBoot框架层面解决&#xff0c;在配置类注解上添加encoding属性值为…

5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6&#xff1a;不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

抽象类(HNU-面向对象程序设计)

抽象类 一种不能被实例化的类&#xff0c;目的是为了让其他类继承它&#xff0c;并在子类中完善它的抽象方法。我们使用 abstract 关键字来定义抽象类&#xff0c;同时它可以包含抽象方法和普通方法。 例子&#xff1a; abstract class Shape {// 抽象方法&#xff0c;没有实…

[足式机器人]Part4 南科大高等机器人控制课 Ch02 Rigid Body Configuration and Velocity

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;CLEAR_LAB 笔者带更新-运动学 课程主讲教师&#xff1a; Prof. Wei Zhang 南科大高等机器人控制课 Ch02 Rigid Body Configuration and Velocity 1. Rigid Body Configuration1.1 Special Orthogonal Group1.2 Use of Ro…

Centos7安装宝塔面板8.0.3并实现公网远程登录宝塔面板【内网穿透】

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

组合总和II(回溯、去重)

40. 组合总和 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a…

相交链表(LeetCode 160)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;暴力法方法二&#xff1a;哈希表方法三&#xff1a;双栈方法四&#xff1a;双指针&#xff1a;记录链表长度方法五&#xff1a;双指针&#xff1a;互换遍历 5.实现示例参考文献 1.问题描述 给两个单链表的…

Java第二十一章网络通信

一、网络程序设计基础 1、局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机&#xff0c;如下图所示。 2、网络协议 1.IP协议 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。设计IP的目的…