I get " Line 8: IndexError: string index out of range" when submitting,but this code works just fine on my pc.
Last input is 1,5.
def fractionToDecimal(numerator, denominator): if(numerator%denominator==0): return str(numerator//denominator) ans = str(numerator/denominator) subs = ans[2:] if len(subs) == subs.count(subs) and len(subs)>3: return ans[:2] + "(" + subs + ")" return ans
You can find my submission here: https://oj.leetcode.com/submissions/detail/17196047/
Can you help me understand why I get the error?
As I said this code works just fine when I run it on my pc using Python 3.4.2
1.It is because the differences between Python 2 and 3 in integer division.
In python 3:
1/2 results in 0.5 while it yields 0 in python 2.
So here is the situation your code run into under python 2 (
subs is the problem in your
if len(subs) == subs.count(subs) and len(subs)>3):
ans = str(1/5) # '0' instead of 0.2 subs = ans[2:] # '' get an empty string rather than '2' subs # IndexError: string index out of range
reference: http://www.informit.com/articles/article.aspx?p=1439189 (see 'True division' part) and https://www.python.org/dev/peps/pep-0238/
You might need to change
ans = str(numerator/denominator) to
ans = str(numerator/float(denominator)) to force true division in python 2.
2.The current supported version of python is python 2.7.8 , according to Frequently Asked Questions
Languages Version C++ g++ 4.9.1 Java java 1.8.0_25 Python python 2.7.8 MySQL mysql-server 5.5.40