2014-11-30 2 views
0

이 follow 프로그램이 제대로 작동하는 데 문제가 있습니다. 나는 나를 괴롭 히고있는 한 걸음 씩, 나는 먼저 무엇이 먼저 작동하는지 살펴 보겠습니다.
압력이 정수이고 단위가 "파스칼", "토르", "atm"또는 "mbar"인 경우 프로그램은 2 개의 인수, 압력 및 단위를 취합니다. "압력 =", 압력, 단위를 반환합니다. 이 작동합니다. 올바른 단위를 입력하지 않으면 인쇄 할 수있는 기능이 필요합니다. " '단위'는 허용 된 단위가 아닙니다.

문제있는 부분 : 변압는 "테스트"와 같은 35.2로 플로트 또는 문자열이 주어집니다하지만 나는 그런 내가

Enter an integer and a unit(seperated by ,): 3045.2,mbar '3045.2' is not an integer 'mbar' is not an accepted unit
는 분명히 이것은 내가 같이 작동하지 않는 출력을 얻을 밀리바로 변수 유닛 올바른 장치를 제공하는 경우 'mbar'는 허용되는 단위입니다. 어떤 도움이라도 대단히 감사하겠습니다. 편집 : 프로그래밍 임은 아주 새로운 전체 그래서 제발 명심 : X
내가 작성한 프로그램 :Python 3.4 함수 'error'출력

pressure, unit = input("Enter an integer and a unit(seperated by ,): ").split(',') 
def func(pressure, unit): 
    try: 
     pressure=int(pressure) 
    except ValueError: 
     print("'"+pressure+"'" + " is not an integer") 
    if(isinstance(pressure,int) and (unit == "pascal" or unit == "mbar" or unit == "atm" or unit == "torr")): 
     print("pressure =",pressure,unit) 
    elif(unit != "pascal" or unit != "mbar" or unit != "atm" or unit != "torr"): 
     print("'"+unit+"'" + " is not an accepted unit") 
func(pressure, unit) 
+0

왜 '분할'을 사용합니까? – freude

+0

구체적인 이유가 없기 때문에 변수 '압력'과 '단위'를 하나의 입력에 할당하고 싶었습니다. split (',')은 ',', 'y'앞에있는 첫 번째 텍스트에 x를 할당하고 ',', ' '. 이것이 어떻게 든 기능에 영향을 미치는지 또는 분할이하는 일에 대한 일반적인 질문 이었습니까? – kroneckersdelta

답변

1

를 장치가 mbar하지만 값이 부동 다음이 검사는 False 것 인 경우 :

if(isinstance(pressure,int) and (unit == "pascal" or unit == "mbar" or unit == "atm" or unit == "torr")): 

이며 "허용 단위가 아닙니다"라는 메시지가 표시됩니다. 두 값을 완전히 따로 확인해야합니다. 값은 정수 (예/아니오)이며 유효 한 단위 (예/아니오)입니다. 두 경우 모두 성공하면 성공 메시지를 인쇄 할 수 있습니다. 그렇지 않으면 하나 또는 두 개의 실패 메시지를 서로 독립적으로 인쇄해야합니다.

+0

답변 해 주셔서 감사합니다. 여전히 프로그래밍에 익숙하지 않은 메신저로이 작업을 수행하는 가장 효율적인 방법은 무엇인가하는 질문이 있습니다. 일반적인 생각은 중첩 된 if 문을 사용하는 것입니다. 더 효과적인 방법이 있습니까? 다시 답장을 보내 주셔서 감사합니다. – kroneckersdelta

+0

이 경우에는 차이가 없으므로 프로그램의 논리를 어느 방식 으로든 수정할 수 있습니다. –

0

except 절에 else을 사용해야합니다. int(pressure)이 올바르게 실행되는 경우에만 실행됩니다. 게다가 변수 유형을 변경하지 마십시오. 혼란 스럽습니다.

def func(str_pressure, unit): 
    try: 
     pressure = int(str_pressure) 
    except ValueError: 
     print("'{}' is not an integer".format(str_pressure)) 
    else: 
     # `pressure` is assigned 
     if unit in {"pascal", "mbar", "atm", "torr"}: 
      print("pressure = {} {}".format(pressure, unit)) 
     else: 
      print("'{}' is not an accepted unit".format(unit)) 

pressure, unit = input("Enter an integer and a unit(seperated by ,): ").split(',') 
func(pressure, unit) 
관련 문제