Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.67 KB | None | 0 0
  1. def only_numbers(s):
  2.     n = 0
  3.     d = 1
  4.     for c in s:
  5.         if c.isdigit():
  6.             n += int(c) * d
  7.             d *= 10
  8.         else:
  9.             break
  10.     return n
  11.  
  12. def pre_letter_number(c, s):
  13.     n = 0
  14.     d = 1
  15.     for i in range(len(s)):
  16.         if s[i].isdigit():
  17.             n += int(s[i]) * d
  18.             d *= 10
  19.         elif s[i] == '^':
  20.             break
  21.     return n
  22. def post_letter_number(c, s):
  23.     n = 0
  24.     d = 1
  25.     start = 0
  26.     for i in range(len(s)):
  27.         if s[i] == '^':
  28.             start = 1
  29.     for i in range(start, len(s)):
  30.         if s[i].isdigit():
  31.             n += int(s[i]) * d
  32.             d *= 10
  33.     return n
  34.  
  35. def product_contains(c, s):
  36.     for x in s:
  37.         if (x == c):
  38.             return True
  39.     return False
  40.  
  41. def polynom(s, x):
  42.     signs = []
  43.     if s[0] != '-':
  44.         signs.append(1)
  45.     for c in s:
  46.         if c == '-':
  47.             signs.append(-1)
  48.         elif c == '+':
  49.             signs.append(1)
  50.     a = s.replace('-', '+').split('+')
  51.     if a[0] == '':
  52.         del a[0]
  53.     sum = []
  54.     for i in range(len(a)):
  55.         if product_contains('x', a[i]):
  56.             for j in range(len(a[i])):
  57.                 if product_contains('^', a[i]):
  58.                     sum.append((x * pre_letter_number('x', a[i]))**post_letter_number('^', a[i]))
  59.                     break
  60.                 else:
  61.                     sum.append(x * pre_letter_number('x', a[i]))
  62.                     break
  63.         else:
  64.             sum.append(only_numbers(a[i]))
  65.             break
  66.     answer = 0
  67.     for i in range(len(sum)):
  68.         answer += sum[i] * signs[i]
  69.     return answer
  70.  
  71. s = input()
  72. print(polynom(s, 3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement