鱼C论坛

 找回密码
 立即注册
查看: 613|回复: 4

[已解决]输出问题

[复制链接]
发表于 2019-5-25 01:33:07 | 显示全部楼层 |阅读模式

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

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

x
while 1:
     hui=[]

     n=input("请输入一个三位数:")
     if not n.isdigit():
          print("请输入数字")
     

     elif (100<=int(n)<=1000):
         
          name=int(n)
          bai=name//100
          shi=name//10%10
          ge=name%10
          if (name==bai**3+shi**3+ge**3):
               print(name)
          else:
               print("看下面")
               for m in range(100,1000):
                    bai=int(m//100)
                    shi=int(m//10%10)
                    ge=int(m%10)
                    if (m==bai**3+shi**3+ge**3):
                         print(m,end=',')
     else:
          print("请输入100到1000之间的数")


运行结果:
请输入一个三位数:333
看下面
153,370,371,407,请输入一个三位数:
看下面哪里用了end函数输出为什么会在n输入的前面:
最佳答案
2019-5-25 05:38:10
其实你根据程序一步一步往下走应该能看明白,
首先,你的333,即name不满足要求所以要执行elif内的if条件所以不会打印name,而执行else,此时便打印“看下面”,然后接着走for循环,循环打印务必,就返回到while下的第一条输入,即你的input内容—输入数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-25 02:30:23 | 显示全部楼层
本帖最后由 hjhhg1991 于 2019-5-25 02:31 编辑

看下面

。。不知道为什么上传不了图片。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-25 05:38:10 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
其实你根据程序一步一步往下走应该能看明白,
首先,你的333,即name不满足要求所以要执行elif内的if条件所以不会打印name,而执行else,此时便打印“看下面”,然后接着走for循环,循环打印务必,就返回到while下的第一条输入,即你的input内容—输入数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-25 07:55:21 | 显示全部楼层

看代码详情解释,就可以明白了

本帖最后由 阳顺 于 2019-5-25 08:13 编辑
  1. #楼主问题(“看下面哪里用了end函数输出为什么会在n输入的前面:”)
  2. #答:从下面代码解释文字可以看出,当输入333时不符合带"#-*-" 标示条件,
  3. #    就直接执行到elif'看下面'语句内容,前面不输出结果而已。
  4. #    相信有代码解释,有水仙花规则说明,你应该明白了!

  5. while 1:
  6.      hui=[]

  7.      n=input("请输入一个三位数:")   #当输入'333'时
  8.      if not n.isdigit():            #-*-输入数据是一个数字,不符合if条件。
  9.           print("请输入数字")       #-*-不执行函数内此行结果
  10.      

  11.      elif (100<=int(n)<=1000):     #'333'符合条件  
  12.          
  13.           name=int(n)              #执行运算name = 333(int)
  14.           bai=name//100            #bai = 3
  15.           shi=name//10%10          #shi = 3
  16.           ge=name%10               #ge = 3
  17.           if (name==bai**3+shi**3+ge**3):   #-*-执行内嵌if条件333==81=(3**3)*3,不成立
  18.                print(name)                  #-*-不成立不输出
  19.                
  20.           else:                             #执行else语句
  21.                print("看下面")              #输出“看下面”
  22.                for m in range(100,1000):    # m = range(100,999)
  23.                     bai=int(m//100)         #bai = (1,9)
  24.                     shi=int(m//10%10)       #shi = (0,9)
  25.                     ge=int(m%10)            #ge = (0,9)
  26.                     if (m==bai**3+shi**3+ge**3): #比如153 == (1**3=1)+(5**3=125)+(3**3=27)
  27.                          print(m,end=',')        #上试成立,打印153,在100到1000中有153,370,371,407符合

  28.      else:                                  #-*-由于同级别elif条件满足,此行结果不执行
  29.           print("请输入100到1000之间的数")  #-*-输入’333‘时此行不执行

  30. #此代码大体意思当输入的数不符合水仙花规则则自动打印(100,1000)中符合条件的数据
  31. #          水仙花规则; xyz = (x**3)+(y**3)+(y**3)
  32. #                      xyx 从右往左数分别是 个 十 百 比如333 三百三拾三
  33. #                    :求x  是一个 百 位所以用整除100。(333//100=3)
  34. #                    :求y  是一个 十 位所以用整除10再除10的余(333//10%10=3)
  35. #                    :求z  是一个 个 位所以直接除10求余       (333%10=3)

  36. #运行结果:
  37. #请输入一个三位数:333
  38. #看下面
  39. #153,370,371,407,请输入一个三位数:
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-25 11:24:17 | 显示全部楼层
hjhhg1991 发表于 2019-5-25 02:30
看下面

。。不知道为什么上传不了图片。

不知到怎么发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 19:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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