整数和字符串冲突

时间:2012-05-15 13:59:32

标签: python string loops integer raw-input

目前我正在进行一项任务,要求我创建一个程序,用户在该程序中输入0-4之间的数字。然后程序检查用户输入的数字并输出特定的字符串。例如,如果用户输入4,程序将输出“80或以上:4级”

问题是用户还应该能够退出该程序。我决定创建程序,所以如果用户输入非空白的东西(输入!=“”:)程序将运行,但如果他们决定按Enter键,程序将结束。

这是我到目前为止提出的代码:

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

我很清楚这个问题与raw_input只接受激活“while level!=”“:”语句的字符串这一事实有关。我尝试通过在每个级别之前放置int()运算符来解决这个问题。问题是,如果用户输入空白,它会与输入冲突,因为它检查输入是否为整数。无论如何都是这样的。

所以我希望有人可以指导我找到解决方法。非常感谢!

2 个答案:

答案 0 :(得分:1)

您可能想要下一个循环代码:

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

我没有想到验证输入有任何捷径。因此,用户可以输入&#34;&#34;或整数。如果用户输入字母会发生什么?

我会相应地验证所有输入,以便程序不会中断

# 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

或者您可以在check_mark

中调用main时检查{{1}}