Python 3除了TypeError不起作用

时间:2017-06-29 15:12:05

标签: python python-3.x

请注意我是新手。我们将非常感谢您的帮助。

while True:
    user = str(input('Enter users sex:'))
    try:
        if user == 'female' or user == 'male': break
    except TypeError:
        print('Please enter male or female')
    continue
print('The user is:',user)

我不明白何时输入一个整数

except TypeError:
    print('Please enter male or female')

print('Please enter male or female')并要求用户输入。

2 个答案:

答案 0 :(得分:7)

您实际上不需要在此处进行例外检查。此外,您的条件语句不会引发TypeError。相反,只需使用条件语句继续循环。这也不需要您在此处使用任何continue语句。

此外,所有input次调用都会返回字符串,因此您无需像这样进行强制转换。因此,只需在没有str调用的情况下输入您的输入:

while True:
    user = input('Enter users sex:')
    if user == 'female' or user == 'male':
        break
    else:
        print('Please enter male or female')
print('The user is:', user)

如果你把它放到一个函数中,你可以简单地返回你的最终结果,然后打印该函数返回的“结果”。以下示例将有助于说明这一点:

def get_user_gender():
    while True:
        user = str(input('Enter users sex:'))
        if user == 'female' or user == 'male':
            break
        else:
            print('Please enter male or female')
    return 'The user is: {}'.format(user)


user_gender = get_user_gender()
print(user_gender)

小注意,您会注意到我引入了format字符串方法。通过这种方式处理字符串操作/格式化,这使得操作字符串更容易养成习惯。

答案 1 :(得分:2)

input()在Python 3中返回一个字符串。在其上调用str使其保持原样,因此它永远不会引发异常。

如果您尝试执行以下操作,可能会收到错误:

number = int(input("enter a number: "))

enter a number: abc
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-ec0ea39b1c6c> in <module>()
----> 1 number = int(input("enter a number: "))

ValueError: invalid literal for int() with base 10: 'abc'

因为字符串'abc'无法转换为整数(在基数10中,至少...)