Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Python While循环响应&查找文件_Python_File_Loops_While Loop - Fatal编程技术网

Python While循环响应&查找文件

Python While循环响应&查找文件,python,file,loops,while-loop,Python,File,Loops,While Loop,我花了两天的时间试图找出一些问题,可能是因为我编写Usgin Python 3.4.1的能力有限 我正在尝试为输入设计一系列选项,并使选项4成为通行证,但仅当文件存在于特定位置时。我可以随时按任何数字,它会重复。但是,如果我选择4,文件不存在,它会返回错误,但无论下一个答案是什么,它都会继续我的程序 print ("Please Choose From the Following Options") print ("1. Option A") print ("2. Option B") prin

我花了两天的时间试图找出一些问题,可能是因为我编写Usgin Python 3.4.1的能力有限

我正在尝试为输入设计一系列选项,并使选项4成为通行证,但仅当文件存在于特定位置时。我可以随时按任何数字,它会重复。但是,如果我选择4,文件不存在,它会返回错误,但无论下一个答案是什么,它都会继续我的程序

print ("Please Choose From the Following Options")
print ("1. Option A")
print ("2. Option B")
print ("3. Option C")
print ("4. Option D")
print ("5. Option R")
monkeyGuess = input("Selection: ")

monkey = "4"

while monkey != monkeyGuess:
    print ()
    print ("Incorrect")
    monkeyGuess = input("Selection: ")

while monkey == monkeyGuess:
    try:
        with open('c:\test.txt') as file:
            break
            pass
    except IOError as e:
        time.sleep(1)
    print ()
    print ("Incorrect")
    monkeyGuess = input("Selection: ")
我厌倦了梳理这两者,但收效甚微:

while monkey != monkeyGuess:
    time.sleep(1)
    print ()
    print ("Incorrect Inputs Found")
    monkeyGuess = input("Selection: ")
    monkey == monkeyGuess or os.path.isfile('test.txt') 
    print ()
    print ("Incorrect Inputs Found")
    monkeyGuess = input("Selection: ")

您的问题是运行此代码的python版本:

bash-3.2$ touch test.txt #Creates a file there so we can ignore the line that checks if it exists
bash-3.2$ python2.7 monkey.py #This is where the script is
Please Choose From the Following Options
1. Option A
2. Option B
3. Option C
4. Option D
5. Option R
Selection: 4
()
Incorrect
Selection: ^C
bash-3.2$ python3.4 monkey.py #Using python3.4
Please Choose From the Following Options
1. Option A
2. Option B
3. Option C
4. Option D
5. Option R
Selection: 4
bash-3.2$ #It exits fine
bash-3.2$ 

第一种方法不起作用,因为一旦输入了正确的输入4,第一个while循环就通过了,而用户要绕过第二个循环所要做的就是选择一个错误的输入,因为这样while==monkeyGuess将为False,循环将停止

第二种方法缺少if语句,但即使它有一个if语句,用户所需要做的就是在使用while monkey!=monkeyGuess:如果选择正确的数字,则为False-文件是否存在并不重要

解决方案:

print ("Please Choose From the Following Options")
print ("1. Option A")
print ("2. Option B")
print ("3. Option C")
print ("4. Option D")
print ("5. Option R")

monkey = "4"

while True:
    monkeyGuess = input("Selection: ")

    if monkeyGuess != monkey:
        print ()
        print ("Incorrect")
        continue

    try:
        with open('c:\test.txt') as file:
            break
    except IOError as e:
        print ()
        print ("Incorrect")

通常,while-True循环最适合此场景。在循环中请求用户输入,然后使用if语句中断循环。

很抱歉,这一切都是新的,您的代码中没有我的信息。这与我所见过的任何东西都是100%不同的。那么,你是说停止使用while吗?不,@cipherlue,很抱歉让人困惑:当你运行python脚本时,你会在shell中调用python myscript.py吗?如果没有,你输入什么来运行你的代码?:没问题,很高兴你找到了答案:没有,我运行了错误的测试。我还没拿到,还以为我拿到了呢。好吧,你的程序是怎么运行的?就这样!非常感谢你,昨天凌晨3点,我只是想仔细阅读一下while-true的声明,但就是想不起来。这工作完美!