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