String 尝试/除了不';t为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

以下模板适用于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 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!"