2017-11-23 1 views
0

하나의 문자열 (st)과 정수 값 (start)을 입력으로받는 countLowerFromUntil (...) 함수를 정의하십시오. 문자열은 잠재적으로 빈 문자열 일 수도 있습니다. 이 함수는 입력 문자열 st에 몇 개의 소문자가 있는지를 반환해야합니다. 시작 위치를 카운트하고 시작을 포함하여 한 번에 한 위치 씩 이동하여 문자열의 끝까지 도달하거나 숫자에 도달 할 때까지 반환해야합니다. 이러한). 문자열에는 문자 또는 숫자가 포함될 수 있습니다. 시작 값이 문자열 범위를 벗어나면 함수는 0을 반환해야합니다. 참고 : true를 반환하는 문자열 메서드 islower()는 소문자 만 포함 된 문자열이나 문자열에 적용됩니다. 세 소문자 (3 개의 "X"는 "S)가 있기 때문에, 예 countLowerFromUntil ("ABCxAxx1aa ')에 대해 값에 도달 할 때까지 소문자를 계산하는 함수를 정의하는 방법은 무엇입니까?

예로 들어 숫자 1

도달하기 전에 3 돌려, 다음 코드 단편

val = countLowerFromUntil("ABCxAxx1aa",0) 

print (val) 

는 출력을 생성한다 :

3 

지금까지 나는 이것을 가지고 있지만 오류 얻을 :

def countLowerFromUntil(st,ch): 
    s = st().strip() 

    count = 1 
    for i in s: 
     if i.islower(): 
      count = count + 1 
    return count 

답변

0

start을 고려해야합니다. 시작 인덱스에서 반복을 시작하십시오. 필요한 것을 슬라이스 할 수 있습니다. 당신은 (제거 공간 start이 무효화 될 수)

알고리즘은 이렇게 가고 제거 할 필요가 없습니다 :

  • 카운트 당신이 숫자가 발생할 경우, 계산 중지 0
  • 에서 시작!
  • 소문자가있는 경우 카운터를 늘리십시오. 함수

def f(string, start): 
    count = 0 
    for c in string[start:]: 
     if c.isdigit(): 
      break 
     elif c.islower(): 
      count += 1 

    return count 
>>> f("ABCxAxx1aa", 0) 
3 
끝에
  • count
  • 관련 문제