def p_parameter(p):
if p < 10 or p > 100:
int(input("Please try again: "))
newp = p
return newp
else:
newp <10 or newp >100
input("Good bye")
bye()
def main():
speed(0)
R=100
r=4
p=int(input("Please enter a number between 10 and 100: "))
p_parameter(p)
t_iter(R,r,p)
Xcord(R,r,p,t_iter(R,r,p))
Ycord(R,r,p,t_iter(R,r,p))
input("Hit enter to close porgram")
bye()
main()这是我绘制螺旋图的程序的代码。程序运行良好,但我在这里发布的是我试图让用户为p输入一个介于10-100之间的值。
我想做的是检查p是< 10还是p > 100。如果是的话,那么给用户一个机会重新输入一个新的p值,并使用该值,只要它符合允许的限制。在第二次检查之后,如果用户仍然输入了不正确的p值,我希望程序关闭。
问题是,它检查'p',然后再次请求p,但它只接受'p‘的第一个值,而不预先形成第二个检查,也不给p新的值。
发布于 2014-09-11 18:26:21
问题与您的解决方案&更正:
它只使用
p的第一个值,而不给p新的值。
p,但不要将这个新值分配给newp变量,如下所示:
newp =int(输入(“请重试:”)不预置第二次检查。
else语句正在检查newp变量范围之外的newp上的条件,该变量位于if语句中。您应该将对newp变量的检查封装在if语句中,如下所示:
p_parameter(p):如果p <10或p >100: newp =int(输入(“请重试:”),如果newp < 10或newp > 100:return语句的实例,在p_parameter()函数中没有if语句。所以应该是这样的:
def p_parameter(p):如果p <10或p >100: newp =int(输入(“请重试:”),如果newp < 10或newp > 100:打印(“再见”)拜拜(),否则:返回newp #需要返回语句像这样:返回p#需要这样的返回语句为您的问题提供了解决方案,
我要做的是检查'p‘>是< 10还是'p’> 100,然后给用户一个机会重新输入一个新的'p‘值,并使用这个值,只要它符合允许的参数。
while True:语句的break无限循环退出。try、except和else块与ValueError一起使用1. to catch any errors due to inputs that are not integers.
2. to detect any inputs that are out of the allowed range.
在第二次检查之后,如果用户仍然输入了一个不正确的值'p‘,我希望程序关闭。
为了关闭程序,您可以:
ctrl+c (我的个人喜好),或者while循环来检查新输入,然后如果使用sys.exit(0)达到了限制,则强制程序退出(注意:首先您需要import sys才能使用它;我认为您的bye()就是这样做的)。把所有东西放在一起:
main()函数中,删除input()语句,只调用p_parameter()函数,如下所示:P= p_parameter()p_parameter()函数如下:
导入sys def p_parameter():exit_counter =1#计数器,在2次尝试后退出,而True: try: P= int(输入(“请输入10到100之间的数字"),除了ValueError: print(”不是数字,(重试“)其他:如果10 2 ):打印(“再见”) sys.exit(0) #拜()返回phttps://stackoverflow.com/questions/25794490
复制相似问题