【问题标题】:Python - How to check if user input is a Complex type inputPython - 如何检查用户输入是否为复杂类型输入
【发布时间】:2021-11-24 03:53:28
【问题描述】:

我想根据输入的类型打印一条消息,但是每次我输入一个复数时,例如(5j)它都会被检测为字符串输入。请问我该如何解决?谢谢。

while True:
    a = input("a ? ")
    if (isinstance(a, complex)):
        print("Valid number, please not Complex!")  
    try:
        a = float(a)
    except ValueError:
        print ('please input a int or float')
        if (type(a)==str):
            print("Valid number, please not String!")
        continue
    if 0.5 <= a <= 100:
        break
    elif 0 <= a < 0.5:
        print ('bigger number, please: 0.5-100')
    elif a < 0:
        print ('positive number, please')
    elif a > 100:
        print ('smaller number, please: 0.5-100')

执行示例:

a ? 5j
please input a int or float
Valid number, please not String!

我试过这样做:

while True:
    try:
        a = input("a ? ")
        if ('j' in a):
            print("Valid number, please not Complex!")
        a = float(a)
    except ValueError:
        print ('please input a int or float')
        if (type(a)==str and 'j' not in a):
            print("Valid number, please not String!")
        continue
    if 0.5 <= a <= 100:
        break
    elif 0 <= a < 0.5:
        print ('bigger number, please: 0.5-100')
    elif a < 0:
        print ('positive number, please')
    elif a > 100:
        print ('smaller number, please: 0.5-100')

但这不是“完美”

【问题讨论】:

    标签: python string input user-input complex-numbers


    【解决方案1】:

    你可以将第一个代码块添加到 try 块中

    像这样-

    while True:
        try:
            a = input("a ? ")
            if (isinstance(a, complex)):
                print("Valid number, please not Complex!")  
            a = float(a)
        except ValueError:
            print ('please input a int or float')
            if (type(a)==str):
                print("Valid number, please not String!")
            continue
        if 0.5 <= a <= 100:
            break
        elif 0 <= a < 0.5:
            print ('bigger number, please: 0.5-100')
        elif a < 0:
            print ('positive number, please')
        elif a > 100:
            print ('smaller number, please: 0.5-100')
    

    这是你的意思吗?

    【讨论】:

    • 不,遗憾的是在输入复数时它仍然会打印“字符串错误”
    【解决方案2】:

    您可以改用嵌套的try-except 和内置函数complex()
    所以,你的代码需要是这样的

    while True:
        a = input("a? ")
        try:
            a = float(a)
            if 0.5 <= a <= 100:
                break
            elif 0 <= a < 0.5:
                print ('bigger number, please: 0.5-100')
            elif a < 0:
                print ('positive number, please')
            elif a > 100:
                print ('smaller number, please: 0.5-100')
        except ValueError:
            try:
                a = complex(a)
                print("Valid number, please not Complex!")
            except ValueError:
                print ("Valid number, please not String!")
                continue
    

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 2023-04-10
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多