【问题标题】:Python For , While loops: change if-else into loopsPython For , While 循环:将 if-else 更改为循环
【发布时间】:2021-11-23 15:27:19
【问题描述】:

我是新手,我的问题是 如何将这些 if-else 语句转换为 for while 循环?

我尝试使用一种愚蠢的方式,我的逻辑如下:

1.输入数字列表

2.使用给定向量中的操作数进行数学运算

3.输出结果

谢谢。

int= [1, 6, 8, 4]  # input int
operands=['+', '-', '*'] # input operands

sum = '+'
sub = '-'
multi = '*'
divide = '/'
z = 1
temp =0
if operands[0] == sum:
    temp = int[0]+int[1]
elif operands[0] == sub:
    temp =int[0] -int[1]
elif operands[0] == multi:
    temp =int[0] *int[1]
elif operands[0] == divide:
    temp = int[0]/int[1]

if operands[1] == sum:
    temp += int[2]
elif operands[1] == sub:
    temp -= int[2]
elif operands[1] == multi:
    temp *= int[2]
elif operands[1] == divide:
    temp /= int[2]
if operands[2] == sum:
    temp += int[3]
elif operands[2] == sub:
    temp -= int[3]
elif operands[2] == multi:
    temp *= int[3]
elif operands[2] == divide:
    temp /= int[3]
    
print(temp)

【问题讨论】:

  • 您想将所有这些条件转换为单个 while 循环吗?
  • 是的,我的作业问题是做数学运算输入:n = [1, 6, 8, 4],operands=['+', '-', '*'] 输出: -4(假设生成的数是a,b,c,d,(((a+b)- c)*d)的结果是-4)
  • 我可以在 list 中输入 N 个 int 元素和操作数,并尝试像计算器一样运行。

标签: python for-loop if-statement while-loop


【解决方案1】:

我认为,for loops 是您所需要的

ints = [1, 6, 8, 4]  # input int
operands = ['+', '-', '/'] # input operands

plus = '+'
minus = '-'
multi = '*'
divide = '/'
z = 1

temp = ints[0]

for i in range(len(operands)): # We need to get range from 0 to length of operands

    if operands[i] == plus:
        temp = temp + ints[i + 1]
    elif operands[i] == minus:
        temp = temp - ints[i + 1]
    elif operands[i] == multi:
        temp = temp * ints[i + 1]
    elif operands[i] == divide:
        temp = temp / ints[i + 1]

print(temp)

另外请记住,将变量命名为 intsum 是个坏主意,因为它是 Python 的内置函数。

【讨论】:

  • 感谢您的建议!我会避免使用这样的函数名称作为变量,顺便说一句输出不正确,我认为它只执行 ints[2] *int[3]
  • @Bennett.tai 这很奇怪,我已经在我的电脑上测试了这段代码,一切似乎都正常(我有 7-232
  • 最终输出应该是-4 (((1 + 6)- 8) * 4)
  • 哦,你的意思是......我已经改变了我的答案,现在它返回-4
【解决方案2】:

首先 ['+', '-', '*'] 这些都称为操作符..

你可以从中得到帮助..

lst = [1, 6, 8, 4]  # input int
operators =['+', '-', '*'] # input operators

sum = '+'
sub = '-'
multi = '*'
divide = '/'
z = 1
temp =0
for i in range(len(lst)-1):
    if i < len(lst):
        if operators[i] == sum:
            temp = lst[i] + lst[i + 1]
        elif operators[i] == sub:
            temp = lst[i] - lst[i + 1]
        elif operators[i] == multi:
            temp = lst[i] * lst[i + 1]
        elif operators[i] == divide:
            temp = lst[i] / lst[i + 1]
print(temp)

【讨论】:

    【解决方案3】:

    这可能会有所帮助

    lst= [1, 6, 8, 4]  # input int
    operands=['+', '-', '*'] # input operands
    temp=lst[0]
    
    for i in range(len(lst)-1):
      expr = "temp="+str(temp)+operands[i]+str(lst[i+1])
      exec(expr)
    
    print(temp)
    
    

    【讨论】:

    • 谢谢!成功了!
    猜你喜欢
    • 2018-08-13
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2014-03-15
    • 2020-09-17
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多