我无法弄清楚为什么我的代码没有返回最低分数:
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()
添加到输入的末尾,但没有做任何事情。
答案 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)
x
进行比较,但您已分配到minimum
。print
和return
嵌套在if
内,您不会等到整个列表中的最小值。i
;它是您列表中的值,而不是索引。