Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Python2.7中会提示用户两次?_Python_Python 2.7 - Fatal编程技术网

为什么在Python2.7中会提示用户两次?

为什么在Python2.7中会提示用户两次?,python,python-2.7,Python,Python 2.7,我有一个恼人的bug,用户会被询问两次他们的年龄,即使用户输入了一个有效的年龄。我将粘贴整个代码,但问题似乎在while循环中。我知道它循环了5次,但是如果用户第一次就正确了,它会继续问他们 i = 1 for i in range(5): i +1 try: age = '' while age < 1 or age > 130: age = int(raw_input('Enter in your age..

我有一个恼人的bug,用户会被询问两次他们的年龄,即使用户输入了一个有效的年龄。我将粘贴整个代码,但问题似乎在while循环中。我知道它循环了5次,但是如果用户第一次就正确了,它会继续问他们

i = 1
for i in range(5):
    i +1
    try:
        age = ''
        while age < 1 or age > 130:
            age = int(raw_input('Enter in your age... '))
            both = str(age)
            if age == -1:
                print 'Exiting'
                time.sleep(.5)
                print 'x----'
                time.sleep(.5)
                print 'xx---'
                time.sleep(.5)
                print 'xxx--'
                time.sleep(.5)
                print 'xxxx-'
                time.sleep(.5)
                print 'xxxxx'
                print 'Exited'
                LOL.exit()
            if age < 1 or age > 130:
                time.sleep(1)
                print 'Enter in your actual age'
            else:
                break
    except ValueError or NameError:
        print 'Please use your actual age, not %s!' %both
        time.sleep(1)
if i > 3:
    print 'YOU\'RE LOCKED OUT!!'
    LOL.exit()
i=1
对于范围(5)中的i:
i+1
尝试:
年龄=“”
当年龄<1岁或年龄>130岁时:
年龄=整数(原始输入('输入您的年龄…'))
两者=str(年龄)
如果年龄==-1:
打印“退出”
时间。睡眠(.5)
打印“x--”
时间。睡眠(.5)
打印'xx---'
时间。睡眠(.5)
打印“xxx--”
时间。睡眠(.5)
打印“xxxx-”
时间。睡眠(.5)
打印“xxxxx”
打印“退出”
LOL.exit()
如果年龄<1岁或年龄>130岁:
时间。睡眠(1)
打印“输入您的实际年龄”
其他:
打破
除ValueError或NameError外:
打印“请使用您的实际年龄,而不是%s!”%二者都
时间。睡眠(1)
如果i>3:
打印“你被锁在外面了!!”
LOL.exit()

您需要删除

for i in range(5):
据我所知,没有必要

在我看来,你的方法还有一些其他问题。看看这是否能让你领先

更新我的第一个建议有几个问题。这样比较好

import time

age, i = '', 0
while age < 1 or age > 130:
    i += 1
    if i > 3:
        print 'YOUR LOCKED OUT!!'
        LOL.exit()
    if age == -1:
        print 'Exiting'
        for s in range(1,6):
            time.sleep(.5)
            print ('x' * s) + ('-' * (5 - s))
        print 'Exited'
        LOL.exit()
    if i > 1:
        time.sleep(1)
        print 'Enter in your actual age'
    age = int(raw_input('Enter in your age... '))
导入时间
年龄,i='',0
当年龄<1岁或年龄>130岁时:
i+=1
如果i>3:
打印“您的锁定!!”
LOL.exit()
如果年龄==-1:
打印“退出”
对于范围(1,6)内的s:
时间。睡眠(.5)
打印('x'*s)+('-'*(5-s))
打印“退出”
LOL.exit()
如果i>1:
时间。睡眠(1)
打印“输入您的实际年龄”
年龄=整数(原始输入('输入您的年龄…'))

请仅包含相关代码。这是太多的代码,无法查找问题。while循环对我来说很好。将年龄初始化为空字符串是一件奇怪的事情……由于您的for循环
对于范围(5)
中的i,它会要求年龄五次。您将它包装在一个循环中,以便执行五次。我非常感谢!我总是想看看如何改进我的代码。谢谢@用户3709398不用担心。想想你在做什么。。。你想循环直到用户得到正确的答案,然后使用while(如果你想对它进行max-trytes,请使用
if
语句。只需注意顺序-如果你尝试我的第一个版本和最新版本,你会发现这很重要。:@user3709398,并且在你反复看到相同的东西(或关闭)时请注意。我的
print('x'*s)+('-'*(5-s))
并不是最优雅的打印方式,但我想让您思考一下如何在循环中完成。