2017-11-14 13 views
-5

Python은 'height'라는 이름이 정의되어 있지 않다는 것을 말하고 있으며, 내 논리에 따르면 가변 높이를 반환하므로 왜 그런지 모르겠습니다. for 루프 내에서 액세스 하시겠습니까?Python 'height'가 정의되어 있지 않습니다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까? 감사합니다. . 편집 : get_int()는 cs50 라이브러리 내의 함수입니다.

import cs50 

def main(): 

    print("Enter a number between 0 and 26: ", end="") 

    i = get_height("Enter height: ", end="") 

def get_height(): 
    while True: 
     height = get_int() 
     if height <= 0 or height >= 23: 
      break 
    return height 


for i in range(height): 
    print(" " * (height - i), end="") 
    print("#" * (i + 2), end="") 
    print("") 


if __name__ == "__main__": 
    main() 
+0

나는 범위 (get_height())에 대해'를 의미합니까? 반환하는 높이가 변수의 이름을 반환하지 않으면 값을 반환합니다. –

+1

즉,'get_height'의'height' 이름은'get_height' 함수에 국한되어 있습니다. 함수 밖의 이름을 가진 어떤 것도 연결하지 않습니다. 또한'get_height'는'main'에서 호출되지만,'main' 자체는 스크립트의 마지막 줄까지 호출되지 않습니다. –

+0

안녕 Jakob,이 다른 질문은 올바른 방향으로 당신을 가리킬 수 있습니다. https://stackoverflow.com/questions/419163/what-does-if-name-main-do – MackM

답변

1
def get_int(): 
    tx = input("Enter height: ") 
    if tx.isdigit(): 
     return int(tx) 
    return None 

def get_height(): 
    while True: 
     height = get_int() 
     if height and height > 0 and height < 26: 
      return height 


if __name__ == "__main__": 
    print("Enter a number between 0 and 26: ") 

    height = get_height() 
    for i in range(height): 
     print(" " * (height - i), end='') 
     print("#" * (i + 2), end='') 
     print("") 
  1. GET_INT하지
  2. 높이가 while 루프에
  3. 높이가
  4. for in range가 밖으로이었다 더 PARAM을 얻을 get_height 수비력 범위에서
  5. 볼 수 없었다
  6. 범위를 벗어난 존재 않습니다 주요 범위의
+0

내가 이것을 실행하려고 시도 할 때 콘솔에 번호를 입력하는 이유를 설명 할 수 있습니까? 그냥 새로운 줄로 점프하고 일부 입력을 기다립니다. 아무 일도 일어나지 않습니다. 또한 if 문에서 "높이 및 높이"가 오타 또는 의도적이라고 말하는가? 감사합니다. –

+0

@JakobHansen'input'은 사용자에게 입력을 요청하는 내장 명령입니다. 'if height'는'get_int'가'None'을 반환 할 수 있기 때문에 확인해야합니다. –

0

는 첫째, 오프 당신은 당신의 높이를 얻을 수 hight = raw_input("What is your hight")를 사용해야합니다. 그런 다음 int(height)을 사용하여 정수로 사용할 수 있습니다. 둘째, 하향식 처리를 수행해야합니다.