首页 > 解决方案 > 编写一个使用循环实现各种算法的 Python 程序

问题描述

我正在为一个类编写一个 python 程序,但我不断收到这些语法错误并且无法弄清楚它们。目标是在 Python 中实现该算法,以便正确设置 min1 和 min2 的值,这应该包含列表中的两个最小值,尽管不一定按该顺序。代码应该基于这个伪:

min1 ← list0
min2 ← list1
for each item in list
   if item < min1
   then if min1 < min2
      then min2 ← item
      else min1 ← item
   else if item < min2
      then min2 ← item
output: min1, min2

这是我收到语法错误的python代码:

list = [4, 5, 1, 9, -2, 0, 3, -5] 
min1 = list[0]
min2 = list[1]
  for item in list :
    if item < min1 :
      if min1 < min2 :
        item = min2
    else :
      item = min1 
    else :
      if item < min2 :
        item = min2

    print(min1, min2)
    return(min1, min2)

此代码返回:min1 = 4,min2 = 5,这是错误的:)。非常感谢任何帮助和建议,因为我是 Python 新手。谢谢!

标签: python

解决方案


这些行需要正确缩进(注意:每个缩进的推荐空格数为 4)

list = [4, 5, 1, 9, -2, 0, 3, -5] 
min1 = list[0]
min2 = list[1]
for item in list:
    if item < min1:
        if min1 < min2:
            item = min2
        else:
            item = min1 
    else:
        if item < min2:
            item = min2
    print(min1, min2)
    return(min1, min2)

顺便说一句,用内置类型的名称命名变量不是一个好习惯。

最好改变它,也许让函数 return item,这是你的代码的更简洁的形式:

def func(lst):

    min1 = lst[0]
    min2 = lst[1]

    for item in lst:
        if item < min1 < min2:
            item = min2
            
        elif item < min1:
            item = min1
            
        elif item < min2:
            item = min2
            
        print(min1, min2)
        return(item)


lst = [4, 5, 1, 9, -2, 0, 3, -5]
func(lst)

推荐阅读