fork(1) download
  1. def p2f_simple(s):
  2. return float(s.strip("%")) / 100
  3.  
  4. def p2f_complex(s):
  5. s = s.rstrip("%")
  6. if "." not in s:
  7. return int(s) / 100
  8. if s.startswith("-"):
  9. return -p2f_complex(s.lstrip("-"))
  10. i, j = s.split(".", 2)
  11. i = int(i)
  12. s = "0.00" + j if i == 0 else str(i / 100) + j
  13. return float(s)
  14.  
  15. tests = {
  16. "150%" : 1.5,
  17. "100%" : 1,
  18. "99%" : 0.99,
  19. "99.999%" : 0.99999,
  20. "99.5%" : 0.995,
  21. "95%" : 0.95,
  22. "90%" : 0.9,
  23. "50%" : 0.5,
  24. "66.666%" : 0.66666,
  25. "42%" : 0.42,
  26. "20%" : 0.2,
  27. "10%" : 0.1,
  28. "3.141592653589793%": 0.03141592653589793,
  29. "1%" : 0.01,
  30. "0.1%" : 0.001,
  31. "0.01%" : 0.0001,
  32. "0%" : 0,
  33. }
  34. tests = sorted(tests.items(), key=lambda x: -x[1])
  35.  
  36. for s, expected in tests:
  37. pps = p2f_simple(s)
  38. if expected == pps:
  39. print('p2f_simple("' + s + '") correctly returned', pps)
  40. else:
  41. print('p2f_simple("' + s + '") returned', pps, 'but we expected', expected)
  42.  
  43. ppc = p2f_complex(s)
  44. if expected == ppc:
  45. print('p2f_complex("' + s + '") correctly returned', ppc)
  46. else:
  47. print('p2f_complex("' + s + '") returned', ppc, 'but we expected', expected)
Success #stdin #stdout 0.04s 9388KB
stdin
Standard input is empty
stdout
p2f_simple("150%") correctly returned 1.5
p2f_complex("150%") correctly returned 1.5
p2f_simple("100%") correctly returned 1.0
p2f_complex("100%") correctly returned 1.0
p2f_simple("99.999%") returned 0.9999899999999999 but we expected 0.99999
p2f_complex("99.999%") correctly returned 0.99999
p2f_simple("99.5%") correctly returned 0.995
p2f_complex("99.5%") correctly returned 0.995
p2f_simple("99%") correctly returned 0.99
p2f_complex("99%") correctly returned 0.99
p2f_simple("95%") correctly returned 0.95
p2f_complex("95%") correctly returned 0.95
p2f_simple("90%") correctly returned 0.9
p2f_complex("90%") correctly returned 0.9
p2f_simple("66.666%") returned 0.6666599999999999 but we expected 0.66666
p2f_complex("66.666%") correctly returned 0.66666
p2f_simple("50%") correctly returned 0.5
p2f_complex("50%") correctly returned 0.5
p2f_simple("42%") correctly returned 0.42
p2f_complex("42%") correctly returned 0.42
p2f_simple("20%") correctly returned 0.2
p2f_complex("20%") correctly returned 0.2
p2f_simple("10%") correctly returned 0.1
p2f_complex("10%") correctly returned 0.1
p2f_simple("3.141592653589793%") returned 0.031415926535897934 but we expected 0.03141592653589793
p2f_complex("3.141592653589793%") correctly returned 0.03141592653589793
p2f_simple("1%") correctly returned 0.01
p2f_complex("1%") correctly returned 0.01
p2f_simple("0.1%") correctly returned 0.001
p2f_complex("0.1%") correctly returned 0.001
p2f_simple("0.01%") correctly returned 0.0001
p2f_complex("0.01%") correctly returned 0.0001
p2f_simple("0%") correctly returned 0.0
p2f_complex("0%") correctly returned 0.0