+ 1
Recently I built a program but it has a little problem, PYTHON
https://code.sololearn.com/cY0Q87P2mKb9/?ref=app The program works completely fine but when it come to numbers which have a zero(0) in them it prints the number twice. I don't know why. For example: 370 is an Armstrong number but the program prints this number twice. Any suggestions on how to fix it would be greatly appreciated! I've already googled through this program but they use another logic. That logic is good but do require some time to learn about while mine program for same is simple and easy to understand. Please help to fix this little error.
12 ответов
+ 4
👆 this is what I meant
Instead of checking throughout the loop check after the end of inner loop
Intermediate steps won't matter so checking after every iteration is useless.
+ 2
Sreejith wow thanks.. really appreciated the way expressed the solution. Now I am really wondering what a fool I was to not think about it.. thanks a lot.
+ 2
Thanks Sreejith and ~ swim ~
+ 1
So what happens in your inner for loop is:
1. Selects number from main loop (i) and loops according to the no. of digits present in (i)
2. The the loop multiplies individual digits to itself n no. of times (where n = no. of digits in i).
3. If the answer of above calculation is equal to i then it's displayed
Now in case of 370 (or any Armstrong no. with zero at end) inner loop iterates 3 time
Loop 1
3 ^ 3 = 27
27 not equal to i so not displayed
Loop 2
7 ^ 3 = 343
27 + 343 = 370
It is equal to i so displayed
You want your program to end here
Loop 3
0^3 = 0
370 + 0 = 370
So displayed
To avoid this you could add break in if block to make sure the inner loop terminate when the answer is printed
+ 1
Well break statement do fix the problem but in this specific case only.. suppose a 3 digit no.(xyz) In which the initial digits only do satisfy the condition like: x^3 + y^3 it will print the output but suppose z in not 0. So it will return it, even though it is not a Armstrong number...
Any way to fix this?
Sreejith
+ 1
~ swim ~ need your help once again bro.
+ 1
Rohit
Put the if block outside inner for loop
line 7-9
+ 1
Sreejith well it won't give any output
+ 1
If it is outside the inner loop