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)
Here's one which moves most of the code out of the function:
# Python 2
TRANS = {ord("0") + digit: unicode(digit*digit) for digit in range(10)}
def square_digits(num):
return unicode(num).translate(TRANS)
Negative numbers keep their leading "-" sign.
Replace unicode with str for the Python 3 version.
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor