2012-07-16 6 views
3

초보자 프로그래밍 클래스를위한 간단한 파이썬 프로그램을 작성하는 데 어려움이 있습니다. 누군가 내가 현재 가지고있는 코드를보고 올바른 방향으로 나를 안내하면 많은 도움이 될 것입니다! 여기 코드는 다음과 같습니다 들여 쓰기를 기반으로 파이썬이 실행 된 이후간단한 파이썬 프로그램 작성하기

def printInfo(patients, nurses, nurseAssistants): 
    print 'The number of patients for this shift is:', patients 
    print 'The number of nurses needed is:', nurses 
    print 'The number of nurses Assistants is:', nurseAssistants 

main() 

:

환자 인력에 간호사를 충족하는 데 도움이되는 프로그램에

def main(): 
    print 'Welcome to the PACU nurse to patient program' 
    print 
    patients = inputPatients() 
    nurses = getNurses(patients) 
    nurseAssistants = getAssistants(nurses) 
    printInfo = (patients, nurses, nurseAssistants) 

    raw_input() 

def inputPatients(): 
    patients = input('Enter the number of patients for this shift (up to 40): ') 
    return patients 

def getNurses(patients): 
    nurses = (1.0/3.0) * patients 
    return nurses 

def getAssistants(nurses): 
    nurseAssistants = (1.0/2.0) * nurses 
    return nurseAssistants 

def printInfo(patients, nurses, nurseAssistants): 
    print 'The number of patients for this shift is:', patients 
    print 'The number of nurses needed is:', nurses 
    print 'The number of nurses Assistants is:', nurseAssistants 


main() 
+1

무엇이 문제입니까? – ardent

+5

dedent (unentent)'main()' – inspectorG4dget

+0

재구성 검사기 G4dget은 문제의 핵심을 가지고 있습니다. 또한 간호사와 간호사 보조원을 위해 분수를 준비해야한다는 사실을 고려하십시오. – TimothyAWiseman

답변

3

변경 코드의 마지막 세그먼트를 필요로한다. 또한, printInfo 문에서 =을 분리합니다

는 첫째, 코드의 어느 것도

들여 쓰기되지 않은 :

nurses = getNurses(patients) 
nurseAssistants = getAssistants(nurses) 
printInfo(patients, nurses, nurseAssistants) 
+0

그래, 그게 달렸어. 고맙습니다. 이제 프로그램 비율을 계산하는 방법 * 스크래치 헤드 *. –

+0

@MichaelHanson 아마 6의 가장 가까운 배수로 취 하시겠습니까? 또는 십진수를 가장 가까운 값으로 반올림하십시오. – hjpotter92

+0

문제가 "비율을 어떻게 계산합니까?"경우 가장 직접적인 대답은'fractions.Fraction (1, 3)'이지만 실제로는 (1.0/3.0)이 잘 작동합니다. 궁극적으로 네이더 - 허드 (Nerd-Herd)가 제안한 것처럼 비율이나 소수 또는 부동 소수점을 사용하거나 정수를 수동으로 확장하는 경우에도 2.5 어시스턴트에서 3으로 반올림하기 위해 코드를 추가해야합니다 (예 : nurseAssistants = math.ceil ((1.0/2.0) * 간호사)'. – abarnert

0

나는 두 가지를 알 수 있습니다. 이것은 여러분이이 사이트에 어떻게 복사했는지에 대한 영향 일지 모르지만 파이썬 공백은 중요하다는 것을 기억하십시오. 특히 코드 블록은 들여 쓰기 수준으로 식별됩니다. 들여 쓰기 기능 내부의 모든 것을

def main(): 
    print 'Welcome to the PACU nurse to patient program' 
    print 
    patients = inputPatients() 
    nurses = getNurses(patients) 
    nurseAssistants = getAssistants(nurses) 
    printInfo (patients, nurses, nurseAssistants) 

    raw_input() 

: 그래서 예를 들어 당신의 main() 함수처럼 보일 것입니다. 사용중인 IDE에 따라 내용을 강조 표시 한 다음 탭 단추를 누를 수 있습니다.

다음으로 중요한 것은, 당신이 간호학 자의 수와 같은 것에 대해 수레를 사용하고 있다는 것입니다. 간호사 중 일부를 찾기 힘들 기 때문에 ceil()과 같은 것을 사용하여 다음 정수로 가져오고 싶을 수도 있습니다.

+0

예, 코드를 사이트에 붙여 넣는 효과가 있습니다. 파이썬의 코드는 정확하게 들여 쓰기되어 있습니다. 제가 두 번째 문제를 구입했지만, 비율을 계산하는 의미, 매 3 명의 환자마다 1 명의 간호사, 2 명의 간호사가 모두 1 명의 간호사 조력자와 관련된 문제가있을 수 있습니다. 비율을 입력하는 방법에 대한 아이디어가 있습니까? –

+0

몇 가지 옵션이 있으며, 그 중 하나는 분수 모듈입니다. – TimothyAWiseman

1

이전 답변은 주요 문제를 암시하지만 출력이 표시되지 않는 이유는 설명하지 않았습니다. .

printInfo라는 변수에 환자, 간호사, 간호사 보조의 3 개 값을 포함tuple를 할당 다음과 같습니다.

printInfo = (patients, nurses, nurseAssistants) 

그것은 출력을 생성하지 않으며, 당신은 아마 기대로 함수 printInfo()를 호출하지 않습니다. 당신이 실제로 필요로하는 함수를 호출하는 것입니다 :

printInfo(patients, nurses, nurseAssistants) 
0

얼간이-무리를하고 mhawke 이미 printInfo로 및 들여 쓰기로 문제를 설명했다,하지만 당신은 여전히 ​​3 nurseAssistants를 대신 얻는 방법에 의해 혼동하는 것처럼 소리 2.5이다. 예를 들어, "이제 비율을 프로그래밍하는 방법을 파악하는 방법"이라고 말하면됩니다.

부동 소수점을 사용하면 모든 10 진수 부동 소수점 값이 IEEE 부동 소수점 값으로 정확하게 표현 될 수있는 문제가 발생할 수 있습니다. 그리고 그 중 하나는 1.0/2.0 대신 fractions.Fraction(1, 2)을 사용하거나 decimal(1)/decimal(2)과 같은 십진수 부동 소수점을 사용하여 "프로그래밍 비율"로 해결할 수 있습니다. 하지만 실제로 문제가 아닙니다.

발생하는 문제는 반올림하려는 것이며 자동으로 발생하지 않습니다. 예를 들어 math.ceil으로 전화하여 명시 적으로해야합니다. 그리고 당신이 그것을 할 수있는 두 개의 장소, 다른 의미론과 함께, 그래서 당신은 당신의 문제에 대해 이해가 결정해야합니다.

옵션 1과 같이, 가능한 한 빨리 반올림하는 것입니다

def getNurses(patients): 
    nurses = math.ceil((1.0/3.0) * patients) 
    return nurses 

def getAssistants(nurses): 
    nurseAssistants = math.ceil((1.0/2.0) * nurses) 
    return nurseAssistants 

옵션 2는 다음과 같이 가능한 한 늦게까지 반올림하는 것입니다 귀하의 경우

def printInfo(patients, nurses, nurseAssistants): 
    print 'The number of patients for this shift is:', math.ceil(patients) 
    print 'The number of nurses needed is:', math.ceil(nurses) 
    print 'The number of nurses Assistants is:', math.ceil(nurseAssistants) 

는, 이것들은 실제로 같은 답변을 줄 것입니다 (환자의 수가 정수라고 가정하면 바라건대 ...). 그러나 이것들이 비슷한 경우에 다른 답을 줄 수있는 방법을 볼 수 있기를 바랍니다. 옳은.

한편, math.ceil(2.66666)은 대신 '3'을 원할 때 '3.0'으로 인쇄됩니다. 이를 위해 math.ceil(nurses)int(math.ceil(nurses)) 등으로 변경하십시오.

관련 문제