[Tutor] Squaring every digit in number

Nathan Hilterbrand nhilterbrand at gmail.com
Sat Nov 21 09:10:48 EST 2015


On 11/21/2015 7:05 AM, Aadesh Shrestha wrote:
> I am currently taking challenges on codewars.
> Problem: Square Every Digit
>
> is there a better solution than this which requires less code?
>
> def square_digits(num):
>      arr = []
>      list  = []
>      while(num !=0):
>          temp = num%10
>          num = num /10
>          arr.insert(0, temp)
>      for i in arr:
>
>          list.append( i*i)
>      str1 = ''.join(str(e) for e in list)
>      return int(str1)
>
>
>
> ************************
> Aadesh Shrestha
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
"Better" is somewhat subjective, but "less code" is not so much so:

def square_digits(num):
     try:
         return int(''.join((str(int(n)**2) for n in str(int(num)))))
     except ValueError:
         return 0

The "str(int(num))" could be shortened to "str(num)", also, but I liked 
being able to accept any argument that could be converted to an int, and 
also raising the ValueError before looping .

Have fun at codewars

Nathan Hilterbrand




More information about the Tutor mailing list