当前位置:   article > 正文

python题目46:火星符号计算_火星文计算

火星文计算

 已知火星人使用的运算符号为#;$ 其与地球人的等价公式如下 x#y=2*x+3*y+4 x$y=3*x+y+2 x y是无符号整数 地球人公式按照c语言规则进行计算 火星人公式中$符优先级高于#相同的运算符按从左到右的顺序运算

输入描述: 火星人字符串表达式结尾不带回车换行 输入的字符串说明是 字符串为仅有无符号整数和操作符组成的计算表达式 1.用例保证字符串中操作数与操作符之间没有任何分隔符 2.用例保证操作数取值范围为32位无符号整数, 3.保证输入以及计算结果不会出现整型溢出 4.保证输入的字符串为合法的求值报文 例如: 123#4$5#76$78 5.保证不会出现非法的求值报文 例如: #4$5 这种缺少操作数 4$5# 这种缺少操作数 4#$5 这种缺少操作数 4 $5 有空格 3+4-5*6/7 有其他操作符 12345678987654321$54321 32位整数溢出

输出描述: 根据火星人字符串输出计算结果 结尾不带回车换行

案例1: 输入: 7#6$5#12 输出: 226 说明 示例7#6$5#12=7#(3*6+5+2)#12 =7#25#12 =(2*7+3*25+4)#12 =93#12 =2*93+3*12+4 =226

  1. def sharp(x , y):
  2. return 2 * x + 3 * y + 4
  3. def dollar(x , y):
  4. return 3 * x + y + 2
  5. def find_x(s , index):
  6. for i in range(index - 1 , 0 , -1):
  7. if s[i] == '#' or s[i] == '$':
  8. return int(s[i + 1:index]) , i + 1
  9. return int(s[:index]) , 0
  10. def find_y(s , index):
  11. for i in range(index + 1 , len(s)):
  12. if s[i] == '#' or s[i] == '$':
  13. return int(s[index + 1 : i]) , i - 1
  14. return int(s[index + 1 : ]) , len(s)
  15. line = input()
  16. for i in line:
  17. if i == '$':
  18. x , x_index = find_x(line , line.index(i))
  19. y , y_index = find_y(line , line.index(i))
  20. line = line[ : x_index] + str(dollar(x , y)) + line[y_index + 1: ]
  21. for i in line:
  22. if i == '#':
  23. x , x_index = find_x(line , line.index(i))
  24. y , y_index = find_y(line , line.index(i))
  25. line = line[ : x_index] + str(sharp(x , y)) + line[y_index + 1: ]
  26. print(int(line))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/450440
推荐阅读
相关标签
  

闽ICP备14008679号