|
发表于 2019-5-25 07:55:21
|
显示全部楼层
看代码详情解释,就可以明白了
本帖最后由 阳顺 于 2019-5-25 08:13 编辑
- #楼主问题(“看下面哪里用了end函数输出为什么会在n输入的前面:”)
- #答:从下面代码解释文字可以看出,当输入333时不符合带"#-*-" 标示条件,
- # 就直接执行到elif'看下面'语句内容,前面不输出结果而已。
- # 相信有代码解释,有水仙花规则说明,你应该明白了!
- while 1:
- hui=[]
- n=input("请输入一个三位数:") #当输入'333'时
- if not n.isdigit(): #-*-输入数据是一个数字,不符合if条件。
- print("请输入数字") #-*-不执行函数内此行结果
-
- elif (100<=int(n)<=1000): #'333'符合条件
-
- name=int(n) #执行运算name = 333(int)
- bai=name//100 #bai = 3
- shi=name//10%10 #shi = 3
- ge=name%10 #ge = 3
- if (name==bai**3+shi**3+ge**3): #-*-执行内嵌if条件333==81=(3**3)*3,不成立
- print(name) #-*-不成立不输出
-
- else: #执行else语句
- print("看下面") #输出“看下面”
- for m in range(100,1000): # m = range(100,999)
- bai=int(m//100) #bai = (1,9)
- shi=int(m//10%10) #shi = (0,9)
- ge=int(m%10) #ge = (0,9)
- if (m==bai**3+shi**3+ge**3): #比如153 == (1**3=1)+(5**3=125)+(3**3=27)
- print(m,end=',') #上试成立,打印153,在100到1000中有153,370,371,407符合
- else: #-*-由于同级别elif条件满足,此行结果不执行
- print("请输入100到1000之间的数") #-*-输入’333‘时此行不执行
- #此代码大体意思当输入的数不符合水仙花规则则自动打印(100,1000)中符合条件的数据
- # 水仙花规则; xyz = (x**3)+(y**3)+(y**3)
- # xyx 从右往左数分别是 个 十 百 比如333 三百三拾三
- # :求x 是一个 百 位所以用整除100。(333//100=3)
- # :求y 是一个 十 位所以用整除10再除10的余(333//10%10=3)
- # :求z 是一个 个 位所以直接除10求余 (333%10=3)
- #运行结果:
- #请输入一个三位数:333
- #看下面
- #153,370,371,407,请输入一个三位数:
复制代码 |
|