2017-12-25 29 views
0

내 코드에서 알 수 있듯이 카펫 피팅 서비스 프로그램을 만들려고합니다! 하지만 두 번째 기능에 도달하면 왜 멈추는 지 잘 모르겠습니다! 내 코드를 분석하고 잘못된 점을 보여 주시겠습니까? 나머지 코드를 보면 내 문제 만 이해할 것을 두려워합니다. 마음에, 나는 아주 새로운 초보자입니다.기능이있는 추적 출력

문제 (코드 - 나는 그것을 찾을 수 없습니다) :

https://pastebin.com/SWMYEAfE 

출력 :

This is Carpet Diem Carpets and we hope we are able to help you today! 
We first need your personal details, so can you please choose your title. 
Mr, Mrs, Miss, Ms, Dr, Lady or Lord?Lord 
Well, what is your last name, Lord? 
>>Test 
Here at Carpet Diem Carpets... 
We offer a variety of different levels of quality - 
With varying prices, of course, Lord Test! 
We can fit your carpets at £6.50 per square meter - the Basic level. 
Standard for £18.75. 
And, for those who like to live as the very best, Luxury for £29.50! 
There is also a 3.75 fee per square meter. 
How many rooms do you want 'carpeted'? 
>>3 
Traceback (most recent call last): 
    File "C:\Users\mikec\OneDrive - Ilford County High School\Computing HW.py", line 144, in <module> 
    loopquality() 
    File "C:\Users\mikec\OneDrive - Ilford County High School\Computing HW.py", line 28, in loopquality 
    for x in range(nor): 
TypeError: 'function' object cannot be interpreted as an integer 
>>> 
+0

'for x in range (nor)'는'nor()'를 호출 한 결과 대신'nor' 함수를 전달하므로 오류 메시지가 발생합니다. –

+1

고마워, 피터! 나는 이전에 당신의 메시지를 이해하지 못했지만, 그랬습니다. 고마워! –

답변

1

난 당신의 코드를 실행으로 즉시 나에게 눈에 띄는 두 주요 오류가 있습니다 :

  • 변수 scope 문제.
  • 속성 이름 덮어 쓰기 문제.

nor입니다. 함수 nor 내부에 정의 된 변수 nor에서 함수를 호출하지 말 것을 알 수 있습니다.

위의 범위 (다른 모든 변수를 정의한 변수)에 nor_val (또는 nor과 다른 변수)이라는 변수를 만들면 즉시 해결할 수 있습니다. nor 함수에서 해당 변수를 업데이트하고 range 호출에 사용하십시오. 두 번째 옵션은 실행 완료시 nor 함수가 nor 특성을 반환하도록하고 range(nor)을 호출하는 대신 range(nor())을 호출하는 것입니다.

첫 번째 경우 특성을 선언 할 위치에 nor_val = 0과 같은 줄을 추가 한 다음 nor_val이라는 변수 (기능 아님)를 나타내는 nor의 모든 인스턴스를 바꿉니다. 두 번째 경우

, 당신은 nor 함수의 끝에서 return nor 같은 라인을 추가하고 range(nor())가되도록 range(nor) 변경합니다.

그러나 두 경우 모두 변수 이름이 매우 직관적이지 않습니다. 이러한 유형의 혼란을 야기 할 수 있으므로 이름을 재사용하지 않도록 노력해야합니다. nor 함수는 함수가 실제로 수행하는 작업을 설명하지 않습니다. 나는 그 전화선을 따라 get_number_rooms 같은 것을 부를 수도 있고, 아마도 nor 변수를 rooms이라고 부를 것이다.

+0

당신은 엄청난 금액을 도왔습니다. 함수를 모두 없애고 변수 이름을 지우려고 결정했습니다. 매력처럼 작동합니다! –

+0

도와 드리겠습니다! 학습 프로그래밍은 모두 시행 착오입니다. 실수를 두려워하지 마십시오. Google은 가장 친한 친구입니다. –