鱼C论坛

 找回密码
 立即注册
查看: 2420|回复: 3

[已解决]Python水仙花课后作业求助

[复制链接]
发表于 2020-2-5 23:14:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#我按照题目要求写了一个判断水仙花的程序,令我十分郁闷的是不知道为什么自己那个if语句进不去,导致我一直无法打印出水仙花数

num = input("请输入你想查询的水仙花数结尾数字:")
temp = list(range(int(num)))     #将传递进来的数字,从0到num一一列举出来
for each in temp:
    three = '%03d' % each        #都补成三位数
    mid = list(str(three))
    if three == pow(int(mid[0]),3) + pow(int(mid[1]),3) + pow(int(mid[2]),3):
        print(three+"是一个水仙花数")
最佳答案
2020-2-5 23:23:17
three是字符串不可能和pow(int(mid[0]),3) + pow(int(mid[1]),3) + pow(int(mid[2]),3)相等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-5 23:23:17 | 显示全部楼层    本楼为最佳答案   
three是字符串不可能和pow(int(mid[0]),3) + pow(int(mid[1]),3) + pow(int(mid[2]),3)相等
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 01:06:23 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-6 01:16 编辑

       下面的代码用数学的方法,分别取得 each 的百、十、个位数,并求取立方和
  1. num = int(input("请输入你想查询的水仙花数结尾数字:"))
  2. if num > 99 and num < 1000:
  3.     for each in range(100 , num):
  4.         if each == (each // 100) ** 3 + (each % 100 // 10) ** 3 + (each % 10) ** 3:
  5.             print(each)
  6. else:
  7.     print('结尾数字必须在闭区间 [100 - 999]')
复制代码


        下面的代码是先把 each 转化为字符列表,再分别取得百、十、个位数,并求取立方和
  1. num = int(input("请输入你想查询的水仙花数结尾数字:"))
  2. if num > 99 and num < 1000:
  3.     for each in range(100 , num):
  4.         d = list(str(each))
  5.         if each == int(d[0]) ** 3 + int(d[1]) ** 3 + int(d[2]) ** 3:
  6.             print(each)
  7. else:
  8.     print('结尾数字必须在闭区间 [100 - 999]')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-7 22:40:58 | 显示全部楼层
冬雪雪冬 发表于 2020-2-5 23:23
three是字符串不可能和pow(int(mid[0]),3) + pow(int(mid[1]),3) + pow(int(mid[2]),3)相等

十分感谢!问题解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-4 01:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表