我正在用python制作一个计算器,需要一种方法来检测运算符符号两边的数字。例如3-61,我希望它检测3和61,并将它们放入变量num1和num2中
我目前正在使用RegEx来查找所有的数字,但这甚至会将10或87这样的数字分成1和0或8和7
这就是我目前拥有的:
import re
var = input("Type equation:")
elif " - " in var:
nums = str(re.findall(r'\d',var))
nums2 = nums.replace("['", "")
nums3 = nums2.replace("', '", "")
Numbers = nums3.replace("']", "")
num1, num2 = (int(i) for i in str(Numbers))
answer = num1 - num2
print(answer)
我对10-6这样的问题的预期结果是4
我的实际结果是错误的数字太多 ValueError:要解包的值太多(应为2)
我知道这是因为我的程序只能做单数,但我希望它能够做更多的单数
这将是一个适用于您描述的情况的解决方案。注意,我删除了
num1, num2
部分中的str()
部分,因为split将返回它所拆分的值的列表。如果把str()
放进去,你就不会比以前走得更远了你的尝试接近解决方案
这个可以用。你已经过度使用了
str()
的意思,find all给了你一个列表,用str()
你告诉解释器把列表再次压缩成一个字符串,这给了你wird[]
的东西。如果不使用str()
,它应该可以工作,就像我在第二个代码部分中描述的那样如果您只对两个数字之间的减法感兴趣,并且它的格式与
X - X
完全相同,那么您可以简单地使用split
函数来解决它:如果您坚持使用regex,您可以类似地解决它:
您可以使用
var.split(" - ")
分割输入。这将返回一个字符串数组。然后,您可以将所有字符串转换为整数,并对其进行加法或减法:请记住,您还必须检查多个符号,例如
4 + 2 - 5
相关问题 更多 >
编程相关推荐