2012-05-15 4 views
0

현재 사용자가 0-4 사이의 숫자를 입력하는 프로그램을 작성해야하는 할당 작업을하고 있습니다. 그런 다음 프로그램은 사용자가 특정 문자열을 입력하고 출력하는 번호를 확인합니다. 예를 들어 사용자가 4를 입력하면 프로그램은 "80 이상 : Level 4"를 출력합니다.정수와 문자열 충돌

문제는 사용자가 프로그램을 종료 할 수 있어야한다는 것입니다. 나는 프로그램을 작성하기로 결정 했으므로 사용자가 공백이 아닌 것을 입력하면 (입력! = "":) 프로그램이 실행되지만 입력을 선택하면 프로그램이 종료됩니다. 나는 문제가 "동안 활성화 어떤 경우에만 문자열을 받아 raw_input을 사실과 관련이있다 꽤 알고 있어요

def get_level(): 
    level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ") 
    return level 

def check_mark(level): 
    if int(level) == 4: 
     print "80 or above: Level 4" 
    elif int(level) == 3: 
     print "70 - 79: Level 3" 
    elif int(level) == 2: 
     print "60 - 69: Level 2" 
    elif int(level) == 1: 
     print "50 - 59: Level 1" 
    elif int(level) == 0: 
     print "Below 50: Level 0" 
    else: 
     print "ERROR: out of range" 

def output(level): 
    while level != "": 
     level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ") 
     check_mark(level) 
     print 

def main(): 
    user_level = get_level() 
    user_mark = check_mark(user_level) 
    print 
    program_output = output(user_level) 

main() 

:

내가 지금까지 가지고 올 한 코드 level! = "": "문. 각 레벨 전에 int() 연산자를 배치하여이 문제를 해결하기 위해 노력했습니다. 문제는 입력이 정수인지 검사하기 때문에 사용자가 공백을 입력하면 입력과 충돌한다는 것입니다. 어쨌든 그런 것.

누군가가이 문제를 해결하기 위해 나를 안내 할 수 있기를 바랍니다. 대단히 감사하겠습니다! 내가 입력을 검증 주위에있는 바로 가기가 htink하지 않는

def output(level): 
    level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ") 
    while level != "": 
     check_mark(level) 
     level = raw_input("\nEnter a number from 0-4 (Press <Enter> to quit): ") 

답변

1

당신은 아마 다음 루프 코드를합니다. 따라서 사용자는 ""또는 정수를 입력 할 수 있습니다. 사용자가 글자를 입력하면 어떻게됩니까? 프로그램이

# check for blank 
if level == '': 
    # exit for user 

# validate input if not exit 
try: 
    level_int = int(level) 
except ValueErrror: 
    # integer not inputed 

if not (0 <= level_int <= 4): 
    # check that input is between 0 4 
    # out of range 

을 파괴하지 않거나 당신이 main

+0

에 전화를 할 때 그냥 check_mark에 expection를 확인할 수 있도록

나는 따라 처리하는 모든 입력을 확인하는 것 두 배 (거의) 같은 'raw_input (...)'- 작동하더라도 매우 우아 해 보이지 않습니다. – eumiro

+0

아, 지금 정말 바보 같아. 간단한 재배치가 트릭을했을 때 코드를 그렇게 구조화하지 말았어야했습니다. 어쨌든 나는 앞으로 질문 할 때까지 더 생각할 것입니다. 도와 주셔서 감사합니다 :) – Jertise

관련 문제