如何让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键,他们将收到第一条语句。但是,目前我只收到一个错误。多

我想创建一个程序,在这个程序中,如果用户在没有输入任何内容的情况下按enter键,python将识别输入的不足,并将其重新定位到适当的操作。例如:

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.")