3

我在为初学者编程课程编写简单的 Python 程序时遇到了麻烦。如果有人可以查看我目前拥有的代码并指导我朝着正确的方向前进,将不胜感激!这是代码:

一项有助于满足护士满足患者人员需求的计划

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()
4

4 回答 4

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()

由于python基于缩进执行。此外,=printInfo语句中删除并使其:

nurses = getNurses(patients)
nurseAssistants = getAssistants(nurses)
printInfo(patients, nurses, nurseAssistants)
于 2012-07-16T23:56:06.270 回答
1

以前的答案暗示了主要问题,但没有解释为什么你没有看到任何输出。

下面包含患者、护士和护士助理的 3 个值的元组printInfo分配给名为 的变量。

printInfo = (patients, nurses, nurseAssistants)

它不会产生任何输出,也不会printInfo()像您期望的那样调用该函数。您实际需要的是进行函数调用:

printInfo(patients, nurses, nurseAssistants)
于 2012-07-17T00:19:38.783 回答
0

我注意到两件事:

首先,您的代码都没有缩进。这可能只是您复制到此站点的方式的后遗症,但请记住,在 Python 中空格很重要。特别是,代码块由缩进级别标识。因此,例如,您的 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() 

函数内的所有内容都缩进了。根据您使用的 IDE,您可能只需突出显示内容,然后按选项卡按钮。

下一个不太重要的事情是,您将浮点数用于诸如保姆数量之类的事情。由于很难拥有护士的一小部分,因此您可能希望使用 ceil() 之类的方法将其提升到下一个整数

于 2012-07-16T23:56:41.020 回答
0

Nerd-Herd 和 mhawke 已经解释了 printInfo 和缩进的问题,但听起来你仍然对如何获得 3 个nurseAssistants 而不是 2.5 个感到困惑。例如,您说,“现在如何计算如何编程比率。”

通过使用浮点数,您可能会遇到并非每个十进制浮点值都可以精确表示为 IEEE 浮点值的问题。并且可以通过“编程比率”来解决这个问题,例如,通过使用fractions.Fraction(1, 2)而不是1.0 / 2.0,或使用十进制浮点数,如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))等。

于 2012-07-17T00:50:36.963 回答