编写一个简单的Python程序

时间:2012-07-16 23:47:44

标签: python

我在为初学者编程类编写一个简单的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 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

以下tuple {{3}}分配给名为printInfo的变量的患者,护士和护士助理的3个值。

printInfo = (patients, nurses, nurseAssistants)

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

printInfo(patients, nurses, nurseAssistants)

答案 2 :(得分: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,您可以只突出显示内容,然后按Tab键。

下一个也是不那么重要的事情是,你正在使用浮子来代替托儿所的数量。由于很难有一小部分护士,你可能想把它带到下一个整数,使用像ceil()这样的东西

答案 3 :(得分:0)

Nerd-Herd和mhawke已经用printInfo和缩进解释了这个问题,但听起来你仍然很困惑如何得到3名护士而不是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.0',而您可能需要'3'。为此,只需将math.ceil(nurses)更改为int(math.ceil(nurses))等等。