首页 > 解决方案 > 如何配置我的数组以执行将小数作为一个元素的数字?

问题描述

# input a string 
str = input("Enter the expression: ")
# make an array to check the operator
opArr = ["+","-","*","/"]
# check for operator 
op = ""
for operator in opArr:
    if str.find(operator) == 1:
        op = operator
# split the array
splitStr = str.split(op)
print(splitStr)
# perform mathematical operations
if op == "+":
    result = float(splitStr[0]) + float(splitStr[1])
elif op == "-":
    result = float(splitStr[0]) - float(splitStr[1])
elif op == "*":
    result = float(splitStr[0]) * float(splitStr[1])
elif op == "/":
    result = float(splitStr[0]) / float(splitStr[1])
else:
    result = "Something Went Wrong!!!"

print(result)

这里输出为:输入表达式:5+5 // 工作输出为 10

但是当我输入 5.0+5 或任何其他十进制数时,它会打印出错误。

好吧,我可以看到 split() 方法将字符串转换为 char 数组的问题。有没有办法将它转换为字符串数组或任何其他方式来保存像 ["5.0", "5"] 这样的元素,所以输出是 10.0 表示 5.0+5?

标签: pythonpython-3.x

解决方案


文档

返回在 slice 中找到子字符串 sub 的字符串中的最低索引s[start:end]。可选参数 start 和 end 被解释为切片表示法。-1如果未找到 sub 则返回。

问题是在 期间5.0+5,操作员+出现在第 3 个索引位置。但是 3 不等于 1。所以op保持不变。并且split需要一些分隔符来分割字符串。

您可以in在此处使用运算符,它返回True是否在主字符串中找到特定子字符串。

for operator in opArr:
    if operator in str1:
        op = operator

推荐阅读