请注意我是新手。我们将非常感谢您的帮助。
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')
并要求用户输入。
答案 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中,至少...)