Python 整数和字符串冲突

Python 整数和字符串冲突,python,string,loops,integer,raw-input,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

目前,我正在处理一项任务,要求我创建一个程序,用户在其中输入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()
def get_level():
级别=原始输入(“输入0-4之间的数字(按退出):”)
返回水平
def检查标记(液位):
如果int(级别)==4:
打印“80或以上:4级”
elif int(级别)=3:
打印“70-79:三级”
elif int(级别)==2:
打印“60-69:第2级”
elif int(级别)==1:
打印“50-59:级别1”
elif int(级别)==0:
打印“低于50:0级”
其他:
打印“错误:超出范围”
def输出(液位):
水平时!="":
级别=原始输入(“输入0-4之间的数字(按退出):”)
检查标记(水平)
打印
def main():
用户级别=获取级别()
用户标记=检查标记(用户级别)
打印
程序输出=输出(用户级)
main()
我很清楚,这个问题与以下事实有关:原始输入只接受字符串,这就是激活“while level!=”“:”语句的原因。我试图通过在每个级别之前放置int()操作符来解决这个问题。问题是,如果用户输入空白,它与输入冲突,因为它检查输入是否为整数。反正是这样的


所以我希望有人能引导我找到解决这个问题的方法。非常感谢

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

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): ")
def输出(液位):
级别=原始输入(“输入0-4之间的数字(按退出):”)
水平时!="":
检查标记(水平)
级别=原始输入(“\n输入0-4之间的数字(按退出):”)

我不认为验证输入有任何快捷方式。因此,用户可以键入“”或整数。如果用户键入字母,会发生什么情况

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

# 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
#检查是否为空
如果级别=“”:
#用户退出
#如果不退出,则验证输入
尝试:
级别int=int(级别)
除ValueError外:
#未输入整数

如果不是(0是(几乎)相同的
原始输入的两倍(…)
-即使它能工作,看起来也不是很优雅。啊,现在感觉真的很傻。我不应该尝试让代码如此结构化,因为简单的重新排列就可以了。无论如何,从现在开始我在提问之前一定会考虑更多。谢谢你的帮助:)