【问题标题】:While Loop Response & Look FileWhile 循环响应和查看文件
【发布时间】:2014-12-25 04:29:01
【问题描述】:

我花了两天时间试图弄清楚(可能是由于我的编码能力有限)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 file loops while-loop


    【解决方案1】:

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

    第二种方法缺少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 语句将break 退出循环。

    【讨论】:

    • 就是这样!非常感谢,昨晚凌晨 3 点,我只是想继续阅读 Ture 的声明,但我无法理解它。这很完美!
    【解决方案2】:

    您的问题是您正在运行此代码的 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$ 
    

    【讨论】:

    • 我很抱歉,但对这一切都很陌生,你把我弄丢了你的代码。这与我所见过的任何东西都 100% 不同。所以你说停止使用while?
    • 不,@CipherBlue,很抱歉让您感到困惑 :) 当您运行 python 脚本时,您是否在 shell 中调用 python myscript.py?如果没有,你输入什么来运行你的代码?
    • :) 没问题,很高兴你知道了 :)
    • 不,我运行了错误的测试。我还没有得到它仍然认为我做到了。
    • 好的,你的程序运行得怎么样了?
    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2017-05-28
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多