Python实现 — —水仙花数(一问多解)

这篇具有很好参考价值的文章主要介绍了Python实现 — —水仙花数(一问多解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在这次实例分享之前先祝自己生日快乐\\\٩( ‘ω’ )و ////


水仙花数(Narcissistic number)是指一个三位整数,其各位数字的3次方和等于该数本身。例如:abc是一个"水仙花数",则:a的3次方+b的3次方+c的3次方 = abc。

一.代码

1.用字符串切片去处理

for循环

for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        print(i)

在Python中通过range函数可以生成指定范围的整数序列,生成[100, 1000)区间的所有三位数,我们可以这么写:range(100, 1000)。因为我接下来要将水仙花数进行切片处理,所以要将i变成字符串的形式。这里我用的是pow()函数去分别让水仙花数的个位十位百位乘以三次方。其实这个代码省略了else,一般出现if就应该最少是双分支,不过这个代码省略了else也没关系,下面是完整的代码:

for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        print(i)
    else:
        continue

while循环

num=100
while num<1000:
    A = str(num)
    if int(A[0]) ** 3 + int(A[1]) ** 3 + int(A[2]) ** 3 == num:
        print(num)
        num += 1
    else:
        num+=1

这段代码和和上面的for循环逻辑是一样的,只不过把range(100,1000)改成了自加(num+=1),这段代码还把幂运算的方法改变了,把pow()函数变成了**。

2.用整除(//)和求余(%)来逐一计算出个位十位百位

for number in range(100, 1000):
    a = number % 10
    b = number // 10 % 10
    c = number // 100
    if a**3 + b**3 + c**3 == number:
        print(number)

这段代码和上面的逻辑是完全不一样的,不再是用字符串切片去对水仙花数操作,而是用计算的方法去算出个位十位百位,具体计算方法如下:

love = 521

# 计算百位数
number = love // 100	#双斜杠(//)代表整除,number = 5

# 计算十位数
love_0 = love % 100		#百分号(%)代表求余,初学者一定要把余数概念弄清楚,不要把余数和小数弄混,这里love_0 = 21
number = love_0 // 10	#number = 21 // 10 = 2

love_1 = love // 10		#love_1 = 52
number = love_1 % 10	#number = 2

# 计算个位数
number = love % 10		#number = 1

了解完如何逐一计算出个位十位百位后再去看代码就很清晰了,先计算出a(个位)b(十位)c(百位),再去运算比较是否是水仙花数。

二. 调整输出行数(变一行输出)

水仙花python编程,python
这是上面三个代码的输出结果,但如果我不要用四行输出,我想用一行输出结果呢,你可以自己先自己尝试一下,下面我来告诉你怎么做。(这里拿第一段代码举例子)

1.空格分隔

在print中加函数end=" ",代码如下:

for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        print(i,end=' ')

下面是输出效果:
水仙花python编程,python

2.逗号分隔

字符串自加

这次用逗号来分隔输出结果,代码如下:

s=""
for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        s+="{},".format(i)
print(s[:-1])

我们先定义一个空字符串,然后让输出结果以字符串的形式自加,这和定义一个0,然后让输出结果自加是一样的。这里的一个细节就是在每次自加时就有一个逗号了,所以在输出时407后面还有一个逗号,这里采用s[:-1]方式不输出最后一个逗号。
下面是输出效果:
水仙花python编程,python

列表自加

s=[]
for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        s+=[t]
print(','.join(s))

方法三和方法二的输出结果是一样,这里就不展示了。
我先建立了一个空的列表,然后去存结果:

s = ['153', '370', '371', '407']

然后再采用字符串的.join()方法输出结果。文章来源地址https://www.toymoban.com/news/detail-554794.html

到了这里,关于Python实现 — —水仙花数(一问多解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 水仙花数(Java解法)

            水仙花数是指一个 3 位数,它每位上的数字的 3 次幂之和等于它本身(例如: 1³ + 5³+ 3³ = 153 ),水仙花数的取值范围在 100~1000 之间。         这个题需要把所以的数字都拿到,然后与 每位上的数字的 3 次幂之和它本身做判断后进行输出。首先,需要使用取余

    2024年02月02日
    浏览(40)
  • C语言打印水仙花数

    “水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1 3+5 3+3^3,则153是一个“水仙花数”。 思路,先把每个数的每位算出来,然后再判断他们的3次方相加是否=这个数,如果等于他就是水仙花数,那么就打印出来

    2024年02月15日
    浏览(36)
  • c语言--使用函数输出水仙花数

    函数接口定义  1、int narcissistic( int number ); 2、void PrintN( int m, int n ); 函数   narcissistic  判断    number  是否为水仙花数,是则返回1,否则返回0。 函数   PrintN  则打印开区间  ( m ,  n )  内所有的水仙花数,每个数字占一行。  题目保证100≤ m ≤ n ≤10000。  裁判测试程序

    2024年02月07日
    浏览(50)
  • 【C语言必刷题】6. 水仙花数

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 水仙花数 的定义:一个三

    2024年04月10日
    浏览(34)
  • C语言每天一练----输出水仙花数

    2024年02月15日
    浏览(76)
  • PTA 编程题(C语言)-- 水仙花数

    题目标题:水仙花数             题目作者:徐镜春  浙江大学 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1^3+5^3+3^3。 本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3≤N≤7)。 输出

    2024年02月04日
    浏览(106)
  • C语言详解-关于水仙花数的算法

    所谓\\\"水仙花数\\\"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个\\\"水仙花数\\\",因为153=1的三次方+5的三次方+3的三次方。 程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位。         x=i%10;        //X表示个位,如153%10的余数是3.  

    2024年02月08日
    浏览(43)
  • C语言 打印0~100000之内的水仙花数

    已知: //求出0~100000之间的所有“水仙花数”并输出。 //水仙花数”是指一个n位数,其各位数字的n次方之和确好 // 等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

    2024年01月25日
    浏览(43)
  • 「题解」关于sizeof陷阱,无符号整形,变种水仙花数

    🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 让我们看一下这段代码: ​​​​​​​ 大家会认为结果是多少呢?结果会是\\\"y is greater\\\"?让我们看一下运行结果吧  为什么会出现这种结果呢,由于x是有符号数-1,内存中是全1,当有符号的

    2024年02月02日
    浏览(43)
  • 【华为OD机试】水仙花数Ⅰ【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。 例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。 输入描述 第一行输入一个整数n,表示一个n位的

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包