我想创建一个程序,如果用户按下回车键而不输入任何内容,python会识别缺少输入并将其重新定位到相应的操作。例如:
some = int(input("Enter a number"))
if not some:
print("You didn't enter a number")
else:
print("Good job")
我想要发生的是,如果用户在没有输入值的情况下按下回车键,他们将收到第一个语句。但是,目前我只收到错误。谢谢。
编辑:我有关于发出try catch语句的各种回复。实际上,在我的原始代码中,我有一个ValueError的错误处理语句。但是,我想区分用户输入单词而不是数字而用户没有输入任何内容。这可能吗?
答案 0 :(得分:2)
您收到此错误是因为input
的任何内容都应该是有效的Python表达式,但是什么都不输入
SyntaxError: unexpected EOF while parsing
编辑:在Python 3.x中输入正常 - 错误只会是下面的ValueError。
您可以通过从input
切换到raw_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")
答案 1 :(得分:1)
我在官方python文档here中搜索并发现了类似的案例:
while True:
try:
x = int(raw_input("Please enter a number: "))
print "good job"
break
except ValueError:
print "Oops! That was no valid number. Try again..."
代码更新如下:
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..."
答案 2 :(得分:0)
您必须使用raw_input
,然后使用try-catch
来输入检查输入。
data = raw_input('Enter number: ')
try:
print('You gave me the number: %i' % int(data))
except:
print("I need a number")
答案 3 :(得分:0)
我认为这就是你正在寻找的东西
try:
some = int(input("Enter a number"))
print("Good job")
except (SyntaxError, ValueError):
print("You didn't enter a number")
答案 4 :(得分:0)
@ 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()方法来区分用户输入单词而不是数字,但这对浮点数不起作用。 See this.
将正则表达式更新为perldoc perlretut,因为前一个正在某些情况下出错。