String 尝试/除了不';t为str()提供错误消息以防止出现数字
以下模板适用于int()或float(),但不适用于str()。 我的期望是产生警告信息:“请输入字符串”,但它没有起作用。你有什么想法吗String 尝试/除了不';t为str()提供错误消息以防止出现数字,string,python-2.7,try-except,String,Python 2.7,Try Except,以下模板适用于int()或float(),但不适用于str()。 我的期望是产生警告信息:“请输入字符串”,但它没有起作用。你有什么想法吗 inp = raw_input("Enter a word") # for instance number =123 try : i = str(inp) except : print 'Please enter a str' 推荐: 罗金:没有 inp=raw_input("enter a string") if not isint
inp = raw_input("Enter a word") # for instance number =123
try :
i = str(inp)
except :
print 'Please enter a str'
推荐: 罗金:没有
inp=raw_input("enter a string")
if not isintance(inp, str):
print "it is not a string!")
else :
print " you done!"
工作:是的
inp = 123
if not isintance(inp, str):
print "it is not a string!")
else:
print " you done!"
-->此路径不适用于原始输入():p
这真的很奇怪
@沃利
非常感谢。。您的路径运行得非常好!:D如果要检查数据类型,
类型(数字)
如果您要求用户输入,结果应该是python2中的
,或者python3中的
,因此您不需要转换
inp = raw_input("Enter a word") # for instance number =123
try :
i = str(inp)
print i
except :
# This will never happen
print 'Please enter a str'
编辑:您需要检查输入是否不是数字
inp = raw_input("Enter a word") # for instance number =123
if not inp.isdigit():
print inp
else:
print 'Please enter a str'
您不必尝试,除非:
inp=input("enter a string: ")
if not isinstance(inp, str):
print 'Please enter a str'
要使用try-except,您可以执行以下操作:
inp=input("enter a string: ")
try:
if not isinstance(inp, str): raise
except:
print 'Please enter a str'
示例:
enter a string: 1
Please enter a str
enter a string: 1.1
Please enter a str
enter a string: 'yes'
<no output here>
您的代码没有按预期的方式工作,因为
raw\u input
总是返回字符串
当您请求一个数字时,您使用的try/except模板会起作用,因为您正在将用户输入的字符串转换为int
或float
,并且int
和float
构造函数如果传递的字符串与其类型不一致,则会引发异常。这不适用于str
,因为不需要转换。对已经是字符串的东西调用str
永远不会失败
如果您想根据字符串的内容而不是类型拒绝某些字符串,则需要执行其他操作。例如,
str.isalpha
将返回True
,如果字符串中的所有字符都是字母顺序。我真的不明白为什么您希望str(number)
在这里引发异常。无论是float(number)
还是int(number)
都不要这样做,尽管你说的不是这样,所以也许你应该多解释一下你在做什么。为了让你更好地理解我,我改编了程序。我希望在用户输入任何数字时收到警告。您是在试图阻止包含任何数字的输入,还是仅阻止所有数字的输入?我试图阻止用户将任何数字作为输入。我希望在我要求用户“输入关键字或bla bla”“number=123”时阻止用户输入任何数字只是程序的一个示例输入。如果要从用户处获取整数,请使用int()
,或float()
获取浮点。str(input())不应引发异常错误。
。我在该代码中使用的逻辑对于浮点或整数非常有效,如以下代码:try:i=float(inp)除了:打印“请输入一个数字”,但是此路径对str不起作用()当用户键入任何数字时,如何接受“请仅输入字符串”之类的警告?因此您想检查输入是否包含数字。您好,但当我使用“原始输入”(“输入字符串”)时它不起作用,不是很奇怪吗?问题在于原始输入,它总是返回一个字符串;尝试使用输入,如:input(“输入字符串”)。如果输入1,则它是一个整数;如果是1.1,那么它是浮动的;如果“是”,那就是字符串。这真是一个很好的解释!在此函数之前我不知道:“isalpha()”,因此如果“raw_input/str”包含字母表以外的任何字符,我可以接受警告。。非常感谢D
import re
inp=raw_input("enter a string: ")
if re.findall('[0-9]', inp):
print 'Please enter a str'
else:
print " you done!"