为什么我的最小功能不打印任何东西?

时间:2017-10-20 15:13:37

标签: python minimum

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

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()添加到输入的末尾,但没有做任何事情。

5 个答案:

答案 0 :(得分:2)

您的input声明需要进行一些调整。以前它只是一个list string。您需要做的是split whitespace您的号码,将每个元素映射到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 values:

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))

答案 1 :(得分:1)

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)

答案 2 :(得分:1)

试试这个,我假设输入后得分以逗号分隔。

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)

答案 3 :(得分:1)

除了Kaushik的更改,您还需要删除

i += 1

在for循环中,每次进行for循环时i都已更改。您还必须在for循环结束时返回最小值。如果您在找到低于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

准确。

答案 4 :(得分:0)

  1. 您的功能是将输入列表的元素与x进行比较,但您已分配到minimum
  2. printreturn嵌套在if内,您不会等到整个列表中的最小值。
  3. 不要增加i;它是您列表中的值,而不是索引。