Python条件不适用(if/elif)

2024-06-17 14:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python代码中遇到了一个条件问题。 这是一个数学应用程序,下面是代码中运行不好的部分:

def askNumber():
    """Asks the number to test"""
    a=raw_input("Select the number to test (type 'exit' for leaving):")
    if len(a)!=0 and a.lower!="exit":
        try:
            b= int(a)
            processing(b)
        except ValueError:
            print "Your input is not valid. Please enter a 'number'!"
            time.sleep(1)
            askNumber()
    elif len(a)!=0 and a.lower=="exit":
        answer()
    else:
        print "Your input can't be 'empty'"
        time.sleep(1)
        askNumber()

因此,当在“a”的原始输入中键入“exit”时,假定要应用的条件是elif1,但最后应用if1,最后打印“您的输入无效”。请输入‘数字’!”对不起,如果这是显而易见的,我是个乞丐,尽管我试过好几次找到错误。在


Tags: andtheto代码testnumberinputyour
3条回答

您需要调用.lower()函数。在

if len(a) != 0 and a.lower() != "exit":
    # ...
elif len(a) != 0 and a.lower() == "exit":

不需要测试len(a)!=0,只需测试a本身:

^{pr2}$

在布尔上下文中,空字符串的值为False。在

您可以更改以下项的条件:

   if a and a.lower() !="exit":
  # .....
   elif a and a.lower() == "exit":
      answer()
   elif a and not a.isdigit(): print "invalid input"
   else:
   #.............

请注意,yo不需要len(a) != 0,只要使用a就可以计算它是否为空。在

你的程序流程有点内翻,我可以提出一些改进意见吗?在

def askNumber():
    """Asks the number to test"""

    while True:
        a = raw_input("Select the number to test (type 'exit' for leaving):")

        if not a:
            print "Your input can't be 'empty'"
            continue

        if a.lower() == "exit":
            answer()
            break

        try:
            b = int(a)
        except ValueError:
            print "Your input is not valid. Please enter a 'number'!"
            continue

        processing(b)

实际上,not a分支也可以消除(空输入将在except中处理)。在

相关问题 更多 >