![](/img/trans.png)
[英]Why does the print statement at the bottom of my main method not print anything?
[英]Why does my minimum function not print anything?
我无法弄清楚为什么我的代码没有返回最低分数:
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()
添加到输入的末尾,但这没有任何作用。
您的input
语句需要一些调整。 以前,它只是一个string
的list
。 您需要做的是用whitespace
split
数字,将每个元素映射到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))
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)
试试这个,我假设分数在输入时以逗号分隔。
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)
除了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
准确。
x
进行比较,但您将其赋给minimum
。 print
和return
嵌套在if
,您将等不及整个列表的最小值。 i
; 这是您列表中的值,而不是索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.