python - 我的 python 程序在 Windows 7 中运行良好并打印到控制台,但在 Linux Mint 中出现错误?

标签 python linux windows

我正在 Windows 中编写一个程序。我启动了我的 linux mint 硬盘,由于某种原因,它在 mint 中给出了错误,但在 windows 7 中却没有?以下是该程序的 3 个文件:

main.py:

#-------------------------------------------------------------------------------
# Name:        main.py
# Purpose:     An RPG (Roll playing game) where you wake up in a room and have
#              to figure out text based puzzles to escape.
#              The whole game will be done in a terminal (Shell) and will be
#              completely text and ascii code. This will be the main file.
#
# Author:      William Bryant
#
# Created:     15/12/2013
# Copyright:   (c) William Bryant 2013
#-------------------------------------------------------------------------------

import time
import ascii
import quests

#The function that starts/restarts the game
def init():
    """
    Calls all the functions to start the game/ restart the game
    """
    #Display a cool banner
    ascii.ywu_banner(2)

    START_INPUT = input("Press ENTER/RETURN on your keyboard to start the game")
    time.sleep(0.7)
    ascii.clear()

    #Game text.
    game_text()

def options():
    pass
#The text which is the main story line after the banner which gives the player
#A sense of what the setting is about
def game_text():
    """
    Prints out a bit of text 2 lines down and clears the screen every 4 or so
    seconds.
    """
    time.sleep(5)

    print("\n\nYour eyes gentally and gradually, open")
    time.sleep(4)
    ascii.clear()
    time.sleep(2)

    print("\n\nYou slowly gather your senses and sit up...")
    time.sleep(4.5)
    ascii.clear()
    time.sleep(2)

    print("\n\nYou look around the room, and try to make sense of the")
    print("environment you are in and to your surprise, you realise your in some")
    print("sort of a prison cell!")
    time.sleep(12.5)
    ascii.clear()
    time.sleep(2)

    print("\n\nYou place your hand on the wall...")
    time.sleep(3)
    ascii.clear()
    time.sleep(2)

    print("\n\n... It feels like some sort of metal.")
    time.sleep(4)
    ascii.clear()
    time.sleep(2)

    print('\n\n"How did I get here?", \nYou think to yourself')
    time.sleep(4)
    ascii.clear()
    time.sleep(2)

    quests.way_out_quest()
    time.sleep(2)
    print("\nYou accepted the quest" + ascii.WOODEN_DOOR)
    time.sleep(10)
    ascii.clear()

    ascii.clear()
    time.sleep(2)

    print("\nYou see a wooden door next to your bed with 5 buttons and a handel...  " + ascii.WOODEN_DOOR)
    time.sleep(10)
    ascii.clear()
    time.sleep(2)

    print("\n\nYou the figure out that it's some sort of combination lock.")
    time.sleep(4)
    ascii.clear()
    time.sleep(2)

    print("\n\nMmm, let me try this: ")
    time.sleep(4)
    ascii.clear()
    time.sleep(2)

#if the file is the main file then start the program
if __name__ == '__main__':
    init()

任务.py:

#-------------------------------------------------------------------------------
# Name:        quests
# Purpose:     To contain quests functions for the game "Yoy wake up..."
#
# Author:      William Bryant
#
# Created:     17/12/2013
# Copyright:   (c) William Bryant 2013
#-------------------------------------------------------------------------------

import time
import ascii
import main

#Error message if user executes the wrong file.
if __name__ == '__main__':
    print("[ERROR]: Do not run this file. Run main.py - this file should not be executed!")
    time.sleep(4)
    exit()

#Function for the first quest: do you want to find a way out?
def way_out_quest():
    """
    If the question is not answered, then the player can't move on. If they say
    yes, then they continue through the script. If they say no, then the init
    function is called from main.py
    """
    way_out_answered = False
    while way_out_answered == False:
        WAY_OUT_INPUT = input("Quest: Do you want to find a way out? ")
        if WAY_OUT_INPUT in ["yes", "Yes", "YES"]:
            way_out_answered = True


        elif WAY_OUT_INPUT in ["no", "No", "NO"]:
            way_out_answered = True
            time.sleep(2)
            ascii.clear()
            print("GAME\nOVER!")
            time.sleep (5)
            ascii.clear()
            main.init()

        else:
            print("Type yes or no. ")

        time.sleep(4)

ascii.py:

#-------------------------------------------------------------------------------
# Name:        ascii
# Purpose:     To create all the ascii art and graphic tools for the game:
#              "you wake up..."
#
# Author:      William Bryant
#
# Created:     15/12/2013
# Copyright:   (c) William 2013
#-------------------------------------------------------------------------------

import time
import os

WOODEN_DOOR = """ ______________________________
/_____/_____/_____/_____/_____/
 ._.                    ._.
 | |                    | |
 |_|   ______   ______  |_|
 |-|  /__1__/  /__2__/  |-|         ___________
 | |                    | |         || ||| ||||
 |_|                    |_|         || ||| ||||
 ._.                    ._.         ||_||| ||||
 | |                    | |        _||_|||_||||_
 |_|   ______           |_|
 |-|  /__3__/           |-|
 | |              /\    | |
 |_|              \/    |_|
 ._.                    ._.                                     _____
 | |                    | |        ____________________________|_____|
 |_|   ______   ______  |_|       | |______________________________| |
 |-|  /__4__/  /__5__/  |-|       | |                              | |
 | |                    | |       |_|                              |_|
 |_|                    |_|
  _____________________________________________________________________
 /_____/  /_____/__/_____/  /_____/  /_____/  /_____/  /_____/  /_____/
 /_____/  /_____/  /_____/  /_____/  /_____/  /_____/  /_____/  /_____/"""

#Error message if user executes the wrong file.
if __name__ == '__main__':
    print("[ERROR]: Do not run this file. Run main.py - this file should not be executed!")
    time.sleep(4)
    exit()

#Clear function
def clear():
    """
    Clears the console screen using the built in commands on a operating
    system (here linux and windows)
    """
    os.system(['clear','cls', "^L"][os.name == 'nt'])

#"Wake up..." title/banner at the start
def ywu_banner(num_of_times):
    """
    Prints You wake up...(the game name) in ascii code big letters into a
    console and clears the screen using the clear function above and reprints
    the message to make the dots at the end appear to be moving.
    """
    print("__     __                         _")
    time.sleep(0.25)
    print("\ \   / /                        | |")
    time.sleep(0.25)
    print(" \ \_/ /__  _   _  __      ____ _| | _____   _   _ _ __")
    time.sleep(0.25)
    print("  \   / _ \| | | | \ \ /\ / / _` | |/ / _ \ | | | | '_ \ ")
    time.sleep(0.25)
    print("   | | (_) | |_| |  \ V  V / (_| |   <  __/ | |_| | |_) | _ _ ")
    time.sleep(0.25)
    print("   |_|\___/ \__,_|   \_/\_/ \__,_|_|\_\___|  \__,_| .__(_|_|_)")
    time.sleep(0.25)
    print("                                                  | |    ")
    time.sleep(0.25)
    print("                                                  |_| ")
    time.sleep(0.25)
    clear()

    for foo in range(num_of_times):
        print("__     __                         _")
        print("\ \   / /                        | |")
        print(" \ \_/ /__  _   _  __      ____ _| | _____   _   _ _ __")
        print("  \   / _ \| | | | \ \ /\ / / _` | |/ / _ \ | | | | '_ \ ")
        print("   | | (_) | |_| |  \ V  V / (_| |   <  __/ | |_| | |_) | _  ")
        print("   |_|\___/ \__,_|   \_/\_/ \__,_|_|\_\___|  \__,_| .__(_|_)")
        print("                                                  | |    ")
        print("                                                  |_| ")
        time.sleep(0.7)
        clear()

        print("__     __                         _")
        print("\ \   / /                        | |")
        print(" \ \_/ /__  _   _  __      ____ _| | _____   _   _ _ __")
        print("  \   / _ \| | | | \ \ /\ / / _` | |/ / _ \ | | | | '_ \ ")
        print("   | | (_) | |_| |  \ V  V / (_| |   <  __/ | |_| | |_) |  ")
        print("   |_|\___/ \__,_|   \_/\_/ \__,_|_|\_\___|  \__,_| .__(_)")
        print("                                                  | |    ")
        print("                                                  |_| ")
        time.sleep(0.7)
        clear()

        print("__     __                         _")
        print("\ \   / /                        | |")
        print(" \ \_/ /__  _   _  __      ____ _| | _____   _   _ _ __")
        print("  \   / _ \| | | | \ \ /\ / / _` | |/ / _ \ | | | | '_ \ ")
        print("   | | (_) | |_| |  \ V  V / (_| |   <  __/ | |_| | |_) |  ")
        print("   |_|\___/ \__,_|   \_/\_/ \__,_|_|\_\___|  \__,_| .___/")
        print("                                                  | |    ")
        print("                                                  |_| ")
        time.sleep(0.7)
        clear()

        print("__     __                         _")
        print("\ \   / /                        | |")
        print(" \ \_/ /__  _   _  __      ____ _| | _____   _   _ _ __")
        print("  \   / _ \| | | | \ \ /\ / / _` | |/ / _ \ | | | | '_ \ ")
        print("   | | (_) | |_| |  \ V  V / (_| |   <  __/ | |_| | |_) | _ _ ")
        print("   |_|\___/ \__,_|   \_/\_/ \__,_|_|\_\___|  \__,_| .__(_|_|_)")
        print("                                                  | |    ")
        print("                                                  |_| ")
        time.sleep(0.7)
        clear()

在 main.py 中使用函数 ascii.ywu_banner(2) 之后,出现此错误:

Press ENTER/RETURN on your keyboard to start the game
Traceback (most recent call last):
  File "main.py", line 102, in <module>
    init()
  File "main.py", line 26, in init
    START_INPUT = input("Press ENTER/RETURN on your keyboard to start the game")
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

最佳答案

您没有指定您使用的 Python 版本,但我假设您在 Windows 上使用的是 3.x,在 Linux 上使用的是 2.x。 input() 在 Python 2.x 和 Python 3.x 上的工作方式不同。在 2.x 上,它尝试将用户的输入评估为 Python 代码(这是非常不安全的),如果尝试在 2.x 上运行 3.x 代码,这将解释您的错误。

注意:3.x input() 的 2.x 等效项名为 raw_input(),但无论如何您可能还有其他一些不兼容的地方。

关于python - 我的 python 程序在 Windows 7 中运行良好并打印到控制台,但在 Linux Mint 中出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750797/

相关文章:

python - Pandas open_excel() 失败,出现 xlrd.biffh.XLRDError : Can't find workbook in OLE2 compound document

python - 如何通过网络抓取喜欢 Instagram 图片的用户?

python - 如何将函数作为参数传递而不执行它?

c# - 创建声音循环

windows - 永久安装旁加载 Windows 应用商店应用程序

c# - 如何从 C# Windows 窗体中的资源文件获取图像路径?

python - 如何获取我的模型所附加的 session ID?

linux - 安装 gitLab 缺少现代化工具?

linux - pthreads 的 Nice-Level?

linux - 在 Linux 环境中将 CSV 文件转换为 XLS 文件(SSR 8020 爱立信)