鱼C论坛

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

关于水仙花数代码优化问题

[复制链接]
发表于 2019-1-11 23:55:45 | 显示全部楼层 |阅读模式

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

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

x
我在打印“XXX数是水仙花数”以后,实现了遍历所有三位数的水仙花数,但代码明显累赘了,不知道怎么优化,求指导。

# 输入一个三位数
while True:
    while True:
        num = int(input('输入一个三位数:'))
        # 数据验证
        #   如果输入的不是三位数,提示输入错误,重新输入
        if not (100 <= num < 1000):
            print("输入的不是三位数,重新输入!")
        else:
            break
    #   如果输入的是三位数,进行数据处理
    # 数据处理 计算公式:输入的这个三位数,百位的三次方+十位的三次方+个位的三次方=这个数本身
    # 判断三位数
    # print(123 // 100)
    # print(123 % 100 // 10)
    # print(123 % 10)
    baiWei = num // 100
    shiWei = num % 100 // 10
    geWei = num % 10
    result = baiWei ** 3 + shiWei ** 3 + geWei ** 3

    # 数据打印
    # 如果是,提示是;如果不是,提示不是,重新输入
    if result == num:
        print('%d是水仙花数' % num)
       for num in range(100, 1000):

            baiWei = num // 100
            shiWei = num % 100 // 10
            geWei = num % 10
            result = baiWei ** 3 + shiWei ** 3 + geWei ** 3
            # 数据打印
            # 如果是,提示是;如果不是,提示不是,重新输入
            if result == num and result != 153:
                print('其他三位数的水仙花数还有:%d' % num)
        break
    else:
        print("%d不是水仙花数" % num)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-12 00:09:43 | 显示全部楼层
本帖最后由 Stubborn 于 2019-1-12 00:18 编辑
  1. def Narcissus():
  2.     for each in range(100, 1000):
  3.         temp = each
  4.         sum = 0
  5.         while temp:
  6.             sum = sum + (temp%10) ** 3  
  7.             temp = temp // 10

  8.         if sum == each:
  9.             print(each, end='\t')     

  10. print("所有的水仙花数分别是:", end='')
  11. Narcissus()
复制代码


若果是单独判断就没有必要去历遍了。这里是打印所有水仙花数。单个判断用下面的:
  1. while True:
  2.     num = int(input('输入一个三位数:'))
  3.     temp = num
  4.     sum = 0
  5.     while temp:
  6.         sum = sum + (temp % 10) ** 3
  7.         temp = temp // 10

  8.     if sum == num:
  9.         print("输入的%s是水仙花数" % (num))
  10.         continue
  11.     else:
  12.         print("输入的%s不是水仙花数" % (num))
  13.         continue
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-12 00:20:58 | 显示全部楼层
能不能整合到一起?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 00:19:10 | 显示全部楼层
枪瞳 发表于 2019-1-12 00:20
能不能整合到一起?

整合到一起?加判断咯,想判别这个数是不是水仙花,就进下面那个模块,打印全部的就进上面那个模块,不过这样有意义吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-13 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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