我是python的初学者,我正在学习它。但是,我在下面生成的代码给出了错误(无效语法)。我认为ValueError行是问题所在。有人可以帮我解决这个问题,因为它非常令人沮丧。感谢
def get_integer():
while True:
try:
seven_integer = int(input("Please enter a seven digit integer: "))
except ValueError:
print("Please enter a seven digit integer")
continue
if 1000000 <= seven_integer
<= 9999999:
return seven_integer
答案 0 :(得分:2)
所以这里有一些问题。
定义函数时,其中的所有内容都需要从定义中缩进一个选项卡。这里你的if
语句超出了你的函数定义,所以返回一些东西毫无意义。
continue
用于打破for或while循环,但是你没有把它放在一个循环中。
if
语句需要在同一行,因此不能在那里换行。
在print语句之前,您似乎也有两个制表符缩进,只应该有一个。
看看这个缩进,它仍然不会做你想做的事情,但它对编译器有意义:
def get_integer():
while True:
try:
seven_integer = int(input("Please enter a seven digit integer: "))
except ValueError:
print("Please enter a seven digit integer")
continue
if 1000000 <= seven_integer <= 9999999:
return seven_integer
如果您希望从用户那里获得一个7位数的整数,那么这样的事情可能会更像您所追求的:
def get_integer():
while True:
try:
user_input = input("Please enter a seven digit integer: ")
seven_integer = int(user_input)
if 1000000 <= seven_integer <= 9999999:
return seven_integer
else:
print("That's not 7 digits...")
except:
print("That's not an integer...")
a = get_integer()
print(a)
答案 1 :(得分:0)
我使用适当的缩进重新格式化了代码,并且它有效。
但是,如果输入的值会产生值错误,则会打印两次消息。
Please enter a seven digit integer: a
Please enter a seven digit integer
Please enter a seven digit integer:
我认为下面的代码修复了您的主要问题。但是,当我将其粘贴到答案框中时,浏览器会将其格式化为您的格式。 :)我不得不努力重新格式化它。
顺便说一句,我使用的是Python 3.6
def get_integer():
while True:
try:
seven_integer = int(input("Please enter a seven digit integer: "))
except ValueError:
print("Please enter a seven digit integer")
continue
if 1000000 <= seven_integer <= 9999999:
return seven_integer