【问题标题】:Why does my minimum function not print anything?为什么我的最小功能不打印任何东西?
【发布时间】:2018-04-01 19:19:33
【问题描述】:

我无法弄清楚为什么我的代码没有返回最低分数:

def min_score(student):
    x = student[0]
    for i in student:
        if i < x:
            minimum = i
            i += 1
            print('Minimum score:', minimum)
            return minimum

brian = [input('Enter brians scores:')]
min_score(brian)

我尝试将.split() 添加到输入的末尾,但什么也没做。

【问题讨论】:

    标签: python minimum


    【解决方案1】:

    您的input 声明需要一些调整。以前它只是一个string 中的一个list。你需要做的是通过whitespacesplit你的数字,将每个元素映射到int,然后将其转换为list

    brian = list(map(int,input('Enter brians scores:').split()))
    

    您的功能也需要进行少量更改。

    def min_score(student):
        x_min = student[0]
        for ele in student[1:]:
            if ele < x_min:
                x_min = ele
    
        print('Minimum score:', x_min)
        return x_min
    

    #driver 值:

    IN : Enter brians scores: 3 5 1
    IN : brian = [3,5,1]
    OUT : Minimum score: 1
    

    当然,使用列表中的min 函数要容易得多。

    brian = list(map(int,input('Enter brians scores:').split()))
    print('Minimum score:', min(brian))
    

    【讨论】:

      【解决方案2】:

      brian 是一个字符串。 python中的字符串是一个字符列表。使用 for 循环,您可以遍历字符串中的每个字符。您应该拆分字符串以获得一个列表(字符串!)。要评估值,您需要对列表的每个元素进行类型转换。您的变量和缩进也存在问题。这有效:

      def min_score(student):
          minimum = int(student[0])
          for score in student:
              i = int(score)
              if i < minimum:
                  minimum = i
          print('Minimum score:', minimum)
          return minimum
      
      brian = input('Enter brians scores:').split()
      min_score(brian)
      

      【讨论】:

      • 非常感谢。添加的目的是什么:for score in student: i = int(score)?
      • 我在循环中将变量 i 替换为 score ,然后使用 i 将字符串的整数值保留在 score 中。请记住,student 包含一个字符串列表,您必须先将其转换为 int,然后才能进行比较!
      【解决方案3】:

      试试这个,我假设输入时分数是逗号分隔的。

      def min_score(student):
      
          x = student[0]
          print x
          for i in student:
              if i < x:
                  x = i
          print('Minimum score:', x)
          return x
      
      brian = input('Enter brians scores:')
      min_score(brian)
      

      【讨论】:

        【解决方案4】:

        除了Kaushik的改动,还需要去掉那一行

        i += 1
        

        在 for 循环中,每次执行 for 循环时 i 都已更改。您还必须在 for 循环结束时返回 minimum。如果您一找到低于 i 的值就返回最小值,您将只能找到 第一个 最小值,而不是 整个 列表的最小值。 修改后的代码如下所示:

        def min_score(student):
            minimum = student[0]
            for i in student:
                if i < minimum:
                    minimum = i
            return minimum
        
        brian = list(map(int,input('Enter brians scores:')))
        print min_score(brian)
        

        如果你放

         44,33,55
        

        进入输入,函数会返回

        33
        

        准确。

        【讨论】:

          【解决方案5】:
          1. 您的函数将输入列表的元素与x 进行比较,但您分配给minimum
          2. printreturn 嵌套在if 中,您无需等待整个列表中的最小值。
          3. 不要增加i;这是您列表中的一个值,而不是索引。

          【讨论】:

            猜你喜欢
            • 2012-12-30
            • 2014-07-03
            • 1970-01-01
            • 1970-01-01
            • 2011-05-27
            • 2011-10-27
            • 1970-01-01
            • 1970-01-01
            • 2019-02-20
            相关资源
            最近更新 更多