2017-10-20 190 views
0

我想不通,为什么我的代码没有返回的最低分数:为什么我的最小功能不打印任何东西?

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()到输入的结束,而是意味着什么也没做。

回答

2

你的input声明只需要很少的调整。以前它只是一个stringlist。你需要做的是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值:

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

但ofcourse,它更容易只是使用min功能就行了。

brian = list(map(int,input('Enter brians scores:').split())) 
print('Minimum score:', min(brian)) 
0
  1. 你的函数输入列表中的元素比较x,但分配给minimum
  2. 由于嵌套在if内的printreturn,您不会等到您拥有整个列表的最小值。
  3. 请勿增加i;它是你列表中的一个值,而不是索引。
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) 
+0

非常感谢。添加的目的是什么:为学生分数:i = int(分数)? – hypatia733

+0

我用循环中的分数替换了变量i,然后使用i来保持字符串的整数值在分数中。请记住,学生包含的字符串列表必须转换为int,然后才能比较它们! – mrCarnivore

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

除了Kaushik的变化,你需要删除线

i += 1 

在for循环中,我已经改变了每次都要经过for循环的时间。您还必须在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 

准确。

相关问题