python第18讲水仙花数问题
题目: 寻找水仙花数题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。
def Narcissus():
for each in range(100, 1000):
temp = each
sum = 0
while temp:
sum = sum + (temp%10) ** 3
temp = temp // 10# 注意这里用地板除
if sum == each:
print(each, end='\t')
print("所有的水仙花数分别是:", end='')
Narcissus()
问题:1.第一行Narcissus(),这个空的括号是什么含义
2.print水仙花数在print each下面,为什么最后还是先打印‘所有水仙花数分别是’
3.最后一行是什么意思,为什么删掉就不会显示结果了
4.既然这个程序一运行就自动显示答案,那为什么要写成def函数形式而不是直接写出来
5.这个函数要怎么调用
新手小白,问题有一点点多,还请各位大佬多多包涵! 本帖最后由 Peteryo01223 于 2021-2-7 18:26 编辑
1. 函数中后面有括号,是Python开发者定的,作为函数的一部分,这题没用到。以后需要时,给函数中的变量赋值,就会写在括号里;
2. 输出时,Print打印这一行先出来,后面运行函数这一行后出来。前面一大段 def,仅仅在定义而已,程序并没有输出;
3. 最后一行,是Python在运行你前面定义的函数。虽然定义好了,但没有这最后一行,就不运行,也就不会打印。相当于你学会了开车,但没有车让你开;
4. 直接写出来,可以的,但不够灵活,函数可以通过改变里面变量,调整要求,比如果找一个4位数的,1万到10万之间的水仙花数。
如果非要直接写,那么我可以如下写。貌似精炼,其实不灵活,是个笨办法,没有通用性:
for answer in range(100,1000):
if (answer//100)**3 + ((answer//10)%10)**3 + ((answer%100)%10)**3 == answer:
print (answer)
5. 最后一行,就是在调用函数。
1.表示所定义函数有哪些自变量,用括号括起来。就相当于高中函数题 f(x)=x+1一样,括号里x是自变量。你看到这个例子括号里没有东西,是因为下面有句for each in range(100, 1000):,这个each就相当于自变量了,在区间【100,1000)按要求取值。要调用这个函数就直接输入Narcissus()。如果去掉for each in range(100, 1000),那就要输入Narcissus(100),运行:Narcissus(101),运行;Narcissus(102),运行......Narcissus(999),运行。一直重复才能达到前面那种的效果,
2.因为12行以前你是在定义一个函数,即告诉python碰到Narcissus()该干嘛。第12行才是真正开始运行程序。就相当于,你妈在9点告诉你12点该吃午饭(1到10行定义Narcissus()),不过现在,先去学习(print("所有的水仙花数分别是:", end=''))。学完已经12点了,那吃饭(运行Narcissus())
3.即调用你前面定义的Narcissus()函数,删了就是没调用这个函数,那python只运行print("所有的水仙花数分别是:", end=''),只显示’所有的水仙花数分别是:‘
4.可能是教学需要吧,可以改成你要求的。
5.就直接输入Narcissus()就好了
小虾林中游 发表于 2021-2-7 18:43
1.表示所定义函数有哪些自变量,用括号括起来。就相当于高中函数题 f(x)=x+1一样,括号里x是自变量。你看 ...
好的好的明白了,谢谢大佬{:5_92:}
页:
[1]