python - 如何配置我的数组以执行将小数作为一个元素的数字?
问题描述
# 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?
解决方案
从文档:
返回在 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
推荐阅读
- javascript - setstate - 动态键值 - 覆盖不合并状态
- angular - 无法读取未定义 Angular 7 的属性“订阅”
- java - 请求的配置文件“pom.xml”无法激活,因为它不存在
- c# - 处理多个具有超时的 CancellationToken
- elasticsearch - SQL 类似于 GROUP BY AND HAVING 示例
- python - 将数字日期转换为字典中的单词
- bash - 在两个文件之间递归搜索单词并将匹配行输出为新文件
- javascript - 包装在 Promise 中生成 XMLHttpRequest 的绑定函数时出现问题
- django - 两个字段唯一
- python - 结合两个不同大小的列表python。数据的标题列表