如何让python认识到没有输入
我想创建一个程序,在这个程序中,如果用户在没有输入任何内容的情况下按enter键,python将识别输入的不足,并将其重新定位到适当的操作。例如:如何让python认识到没有输入,python,input,enter,Python,Input,Enter,我想创建一个程序,在这个程序中,如果用户在没有输入任何内容的情况下按enter键,python将识别输入的不足,并将其重新定位到适当的操作。例如: some = int(input("Enter a number")) if not some: print("You didn't enter a number") else: print("Good job") 我希望发生的是,如果用户在没有键入值的情况下按下enter键,他们将收到第一条语句。但是,目前我只收到一个错误。多
some = int(input("Enter a number"))
if not some:
print("You didn't enter a number")
else:
print("Good job")
我希望发生的是,如果用户在没有键入值的情况下按下enter键,他们将收到第一条语句。但是,目前我只收到一个错误。多谢各位
编辑:我有各种各样的关于发布try-catch语句的回复。实际上,在我的原始代码中,我有一个ValueError的错误处理语句。但是,我想区分用户输入文字而不是数字和用户不输入任何内容。这可能吗?之所以出现此错误,是因为给定给
input
的任何内容都应该是有效的Python表达式,但不输入任何内容都不会产生错误
SyntaxError: unexpected EOF while parsing
Edit:在Python 3.x中,输入是正确的-错误只会是下面的ValueError。
您可以通过从input
切换到raw\u input
来解决此问题,但是int
也无法解析空字符串,这会导致另一个错误:
ValueError: invalid literal for int() with base 10: ''
因此,您可以捕获生成的异常,也可以使用条件语句检查空输入。后者更可取,因为代码中可能出现的其他错误可能会被异常处理吞没
raw = raw_input("Enter a number: ")
if not raw:
print "You didn't enter a number"
else:
some = int(raw)
print "Good job"
当然,请注意,您可能还需要处理其他语法问题,例如,如果一个人输入的东西不是整数(例如“cat”)您必须使用
raw\u input
,然后使用try catch
来检查您的输入
data = raw_input('Enter number: ')
try:
print('You gave me the number: %i' % int(data))
except:
print("I need a number")
我在官方python文档中搜索并发现了一个类似的案例: 更新01 代码更新如下:
while True:
try:
x = raw_input("Please enter a number: ")
x_mod = int(x)
print "good job"
break
except ValueError:
if len(x)==0:
print "you entered nothing"
else:
print "Oops! That was no valid number. Try again..."
我想这就是你要找的
try:
some = int(input("Enter a number"))
print("Good job")
except (SyntaxError, ValueError):
print("You didn't enter a number")
@user3495234您可能已经解决了这个问题,但我会用以下方法解决这个问题
import re
some = input("Enter a number?\n>")
reg = re.compile('^[+-]?(\d+\.\d+|\d+\.|\.\d+|\d+)([eE][+-]?\d+)?$')
# A regexp from the perldoc perlretut
if some == "":
print("Please enter something.")
elif reg.match(some):
x = float(some) # To avoid type casting error
y = int(x) # Apparently int(float) = int
print("Good job")
print(y) # Checking for value is integer or not.
else:
print("Looks like you didn't enter a number.")
我尝试使用isdigit()方法来区分用户输入的单词而不是数字,但这对float不起作用
将正则表达式更新为1,因为上一个正则表达式在某些情况下给出了错误。是否可能是:
如果某些正则表达式不是无的:
而不是如果不是某些正则表达式:
仍然得到错误,不幸的是,如果这个问题被标记为python3,那么下面可能就不会出现这种混乱。请以后再这样做。有没有办法区分此错误和常规值错误?因为在我的原始程序中,我有一个try,exception语句,当用户输入一个单词而不是一个数字时,它会打印一个错误语句。但是,如果他们不输入任何内容,我想提供一个不同的语句。另外,由于我使用的是Python 3,原始输入是否仍然适用?当int
达到它无法处理的程度时,一般错误是ValueError
,尝试区分特定类型的错误是可能的,但不必要的困难。使用条件语句将输入字符串与您希望涵盖的任何预期情况相匹配;i、 如果字符串是空的,或者它不包含数字,如果它是浮点数,等等。如果我能做些什么来改进我的答案,请告诉我。
import re
some = input("Enter a number?\n>")
reg = re.compile('^[+-]?(\d+\.\d+|\d+\.|\.\d+|\d+)([eE][+-]?\d+)?$')
# A regexp from the perldoc perlretut
if some == "":
print("Please enter something.")
elif reg.match(some):
x = float(some) # To avoid type casting error
y = int(x) # Apparently int(float) = int
print("Good job")
print(y) # Checking for value is integer or not.
else:
print("Looks like you didn't enter a number.")