为什么我的最小功能不打印任何东西?
问题描述:
我想不通,为什么我的代码没有返回的最低分数:为什么我的最小功能不打印任何东西?
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
。你需要做的是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))
答
- 你的函数输入列表中的元素比较
x
,但分配给minimum
。 - 由于嵌套在
if
内的print
和return
,您不会等到您拥有整个列表的最小值。 - 请勿增加
i
;它是你列表中的一个值,而不是索引。
答
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循环的时间。您还必须在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
准确。
非常感谢。添加的目的是什么:为学生分数:i = int(分数)? – hypatia733
我用循环中的分数替换了变量i,然后使用i来保持字符串的整数值在分数中。请记住,学生包含的字符串列表必须转换为int,然后才能比较它们! – mrCarnivore