以下镜像用于int()或float(),但它不适用于str()。 我的期望是提出警告信息:'请输入一个字符串',但它没有用。你有什么想法吗?
inp = raw_input("Enter a word") # for instance number =123
try :
i = str(inp)
except :
print 'Please enter a str'
建议:
Wroking:否
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!"
- >此路径不适用于raw_input():P 它真的很奇怪..
@Woly
非常感谢..你的道路运转得很好! :d
答案 0 :(得分:0)
如果您想要检查数据类型, AND NOT EXISTS ( SELECT * FROM onlines WHERE username = users.username )
如果你要求用户输入,结果应该是python2中的type(number)
或python3中的<type 'str'>
,所以你不需要转换。
<class 'str'>
修改强>:
您需要检查输入是否不是数字。
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'
答案 1 :(得分:0)
你不必尝试 - 除了:
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>
编辑:因为目的是防止任何数字输入,所以正则表达式可以正常工作:
import re
inp=raw_input("enter a string: ")
if re.findall('[0-9]', inp):
print 'Please enter a str'
else:
print " you done!"
答案 2 :(得分:0)
您的代码无法按预期工作,因为raw_input
始终返回字符串。
您正在使用的试用/除外模板在您要求输入数字时起作用,因为您将用户输入的字符串转换为int
或float
如果传递的字符串与其类型不对应,则int
和float
构造函数将引发异常。这与str
不起作用,因为不需要转换。在已经是字符串的内容上调用str
永远不会失败。
如果您想根据其内容而不是其类型拒绝某些字符串,则需要执行其他操作。例如,如果字符串中的所有字符都是按字母顺序排列的话str.isalpha
将返回True
。