2017-10-20 13 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) 

I는 입력의 끝에 .split()을 추가하는 시도하지만 그건 아무것도하지 않았다.

답변

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 값 :

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)) 
0
  1. 함수는 x에 입력리스트의 요소를 비교되지만 minimum에 할당합니다.
  2. printreturnif 안에 중첩되어 있으면 전체 목록이 최소가 될 때까지 기다리지 않습니다.
  3. 증가시키지 마십시오. i; 그것은 당신의 목록에서 나온 값이지 색인이 아닙니다.
1

브라이언은 문자열입니다. 파이썬의 문자열은 문자 목록입니다. 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를 루프에서 score로 바꾸고 i를 사용하여 문자열의 정수 값을 score로 유지합니다. 학생은 비교하기 전에 int로 변환해야하는 문자열 목록이 포함되어 있음을 기억하십시오! – mrCarnivore

1

시도해보십시오. 입력 할 때 점수가 쉼표로 구분되어 있다고 가정합니다. Kaushik이의 변화뿐만 아니라

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

, 당신은 루프 라인에게에서

i += 1 

을 제거 할 필요는 내가 이미 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) 

를 사용하면, 함수가 정확하게

33 

반환 입력에

44,33,55 

을 넣어합니다.