如何利用多层循环找出对称的3位数数字?
找出对称的3位数数字?
题目详情:
利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。
题目拓展
如果随便给定一个数字,怎样去判断这个数字是对称数?
解题思路
3位对称数字的查找:
L = [x*100 + y*10 + z for x in range(1, 10) for y in range(0, 10)for z in range(0, 10) if z == x]
print(L)
运行结果
========= RESTART: C:/Users/lenovo/OneDrive/Python/多重for循环求三位对称数0.py =========
>>>
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]
>>>
上面是使用多层循环来找出对称数字,
下面使用的是普通的方法找出对称数字:
L = range(100, 1000)
newL = []#找一个中间列表存放新的数字
for n in L:x = int( n/100 )#这里使用 int() 函数是将结果转换为整型,下同y = int( n%10 )if x==y :newL.append(n)#列表的添加函数 append() #十位数不用去考虑,只考虑百位与各位相等就可以了
print(newL)
运行结果:
========= RESTART: C:/Users/lenovo/OneDrive/Python/多重for循环求三位对称数.py =========
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]
>>>
其实两个结果是一样的,当然是一样的啊!
随便给定n位数字的查找
判断n位数是否为对称数的关键是要分离出每一位上的数字,在与之相对称的位置进行比较,在没有传递这个数之前,程序是无法判断它是几位数的。
def fun( x ):y = xL = []while y:#将每一位数分离开,存在列表 L 里,并且是从低位到高位排序L.append( y%10 )y = int( y / 10)i = len( L )-1for n in L:#新生成一个数,把原来的低位便高位,高位变低位y = y+ n*pow(10,i)i = i - 1if x==y:#判断两数是否相等return print('此数为对称数!')else:return print('此数非对称数!')
运行调用函数的结果:
========== RESTART: C:\Users\lenovo\OneDrive\Python\随机给的数字是否为对称数.py ==========
>>> fun(123456654321)
此数为对称数!
>>> fun(1234566543211)
此数非对称数!
>>>
下午想了比较久,在分离出数字得到 L 后,如何去把 L 的第一个元素与最后一个元素比较,第二个和倒数第二个,一直卡在这一关,突然发现可以使用 L 新生成一个数 y ,在对两者进行比较,这样会简单许多。
如何利用多层循环找出对称的3位数数字?相关推荐
- Java黑皮书课后题第5章:5.13(求满足n的三次方<12000的n的最大值)使用while循环找出满足n的三次方<12000的n的最大值
5.13(求满足n的三次方<12000的n的最大值)使用while循环找出满足n的三次方<12000的n的最大值 题目 题目概述 破题 代码 简化版本 题目 题目概述 5.13(求满足n的 ...
- Java黑皮书课后题第5章:5.12(求满足n方>12000的n的最小值)使用while循环找出满足n方大于12000的最小整数n
5.12(求满足n方>12000的n的最小值)使用while循环找出满足n方大于12000的最小整数n 题目 题目概述 破题 代码 题目 题目概述 5.12(求满足n方>12000的n的最 ...
- 中国电子学会scratch等级考试四级编程题:找出出现次数最多的数字
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...
- 找出数组中重复的数字---多思路
问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 编写一个程序,从10亿个数字的数组中找出100个最大的数字
本文翻译自:Write a program to find 100 largest numbers out of an array of 1 billion numbers I recently at ...
- 在字符串中找出连续最长的数字串
微软面试题之一,难度系数低. 题目描述如下: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的 ...
- 剑指offer 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来(leetcode有空就刷系列之找出数组中重复的数字)
数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找 ...
- 100亿数据找出最大的1000个数字
这是互联网领域一个比较经典的算法问题(top k),如何在巨大的数据中找出最大,或者访问量最高的前10个,前100个或者前1000个数据.比如在2亿用户记录中找出信用等级最高的,在上亿个搜索词汇中找出 ...
最新文章
- 百度最近开源了分布式配置中心,名叫BRCC
- php时间戳 今天昨天,php求今天、昨天、明天时间戳的简单实现方法
- Leetcode - 347. Top K Frequent Elements(堆排序)
- Redis 基本数据类型 :String、Hash、List、Set、ZSet
- Error(6,35)java: 程序包 不存在,解决办法
- [完结]以C++与Java为例,详解数据结构的动态增长策略
- 网络中各层协议(7层)
- Unity3D资源热更新(一)
- 服务器设置防火墙网站打不开,部分网站打不开如何处理?
- CSS3 制作 3D 水晶糖果按钮
- python豆瓣镜像_pip使用豆瓣的镜像源
- 火车票能不能选座_终于,买火车票也能选座了!
- html meta标签使用总结(转)
- CleanMyMac X清理苹果mac特殊的软件授权权限问题如何解决
- 用支付宝扫自己生成的网页二维码无法跳转的问题
- HTML设置页面动画效果有几种,前端制作动画的几种方式(css3,js)
- 阿里云独享虚拟主机和共享虚拟主机区别对比
- 第四讲:1.定时、延时任务控制小台灯打开/关闭
- 基于组合权重优化的风格中性多因子选股策略_数量化专题之五十七
- 租房信息采集并做数据分析