Kmom10 - UnicodeEncodeError

  • Författare
  • Meddelande

EmelieK

javascript-guru

  • Inlägg: 89
  • Blev medlem: 16 aug 2016, 16:31

Kmom10 - UnicodeEncodeError

Inlägg29 okt 2016, 15:46

Hej,

någonting i nedanstående kod ger mig ett UnicodeEncodeError. Felmeddelandet avslöjar inte var i koden det blir fel så jag är helt lost. :( Please help!

Kod: Markera allt
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Game description, menu, commands and "game engine".

"""

import rooms.room
import adventure
import inventory
import rooms.firstRoom
import rooms.secondRoom
import rooms.thirdRoom
import rooms.fourthRoom
import rooms.fifthRoom
import rooms.sixthRoom
import rooms.seventhRoom


def gameDescription():
    """
    Prints the game description.
    """
    print("Welcome to the zoo! You and your colleague Tim are here to take care of all the animals.\n"
          "Start by going to the crew area and get all you need. Tim will meet you there! Good luck! ")
    input("\nPress enter to continue...")
   

def gameMenu():
    """
    Prints the game menu options.
    """
    print("""
    Available commands:
    -----------------------------------------------------------------------------
    ba, bak                       Takes you to previous room. 
    fr, fram                      Takes you to the next room, if the room is unlocked. 
    h, hjälp                      Displays this help message.
    i, info                       Displays a description of the current room.
    l, ledtråd                    Displays a clue.
    se                            Look around! Highlights certain objects of the room.
    av, avsluta                   Quit the program.
   
    Object interactions:
    -----------------------------------------------------------------------------
    o, objekt                     Displays a list of objects in the current room.   
    t [objekt], titta [objekt]    Displays a description of the object.
    ö [objekt], öppna [objekt]    Opens an object, if possible. 
    f [objekt], flytta [objekt]   Move object to another place, if possible.
    s [objekt], sparka [objekt]   Kick an object to destroy it, if possible.
    inv, inventarier              View items in bag.
    ta [objekt]                   Add items to bag.
    sl [objekt], släpp [objekt]   Remove items from bag.
    a [objekt], använd [objekt]   Use item in bag.
    """)
   
   
def gameMenuOptions(room):
    """
    Executes the users commands. 
    """
    enteredText = input("\n--> ")
    print()
    command = ""
    item = ""
    wrongCommand = ("Nah, sorry. You can only choose commands from the menu.\n"
                  "type 'h' or 'hjälp' to see all available commands.")
   
    if enteredText == "":
        print(wrongCommand)
    else:
        command = enteredText.split(' ', 1)[0]
        item = enteredText.rsplit(None, 1)[-1]

        if command in ('av', 'avsluta'):
            adventure.quitAdventure()
   
        elif command in ('h', 'hjälp'):
            gameMenu()
           
        elif command in ('i', 'info'):
            room.roomDescription()
           
        elif command == 'se':
            room.roomView()
           
        elif command in ('l', 'ledtråd'):
            room.roomClue()
           
        elif command in ('fr', 'fram'):
            if room.nextRoomOpen():
                determineRoom(room, 1)
           
        elif command in ('ba', 'bak'):
            determineRoom(room, -1)
   
        elif command in ('inv', 'inventarier'):
            inventory.viewInventory()
           
        elif command == 'ta':
            room.pickUpItem(item)
           
        elif command in ('sl', 'släpp'):
            room.dropItem(item)
   
        elif command in ('a', 'använd'):
            room.useFromBag(item)
           
        elif command in ('o', 'objekt'):
            room.itemsInRoom()
           
        elif command in ('t', 'titta'):
            room.describeItem(item)
           
        elif command in ('ö', 'öppna'):
            room.openItem(item)
           
        elif command in ('f', 'flytta'):
            room.moveItem(item)
           
        elif command in ('s', 'sparka'):
            room.kickItem(item)
           
        elif command in ('u', 'unlock'):
            room.unlockCheat()
            determineRoom(room, 1)
       
        else:
            print(wrongCommand)         
       

def gameStart():
    """
    This is where the game starts.
    """
    while True:
        gameDescription()
        gameMenu()
        goToRoom(rooms.firstRoom.FirstRoom())
       
       
def determineRoom(room, frwOrBack):
    """
    Determines which room to go to.
    """
    from rooms.firstRoom import FirstRoom
    from rooms.secondRoom import SecondRoom
    from rooms.thirdRoom import ThirdRoom
    from rooms.fourthRoom import FourthRoom
    from rooms.fifthRoom import FifthRoom
    from rooms.sixthRoom import SixthRoom
    from rooms.seventhRoom import SeventhRoom
   
    allRooms = [rooms.firstRoom.FirstRoom(), rooms.secondRoom.SecondRoom(), rooms.thirdRoom.ThirdRoom(),
            rooms.fourthRoom.FourthRoom(), rooms.fifthRoom.FifthRoom(), rooms.sixthRoom.SixthRoom(),
            rooms.seventhRoom.SeventhRoom()]
    roomInstances = [FirstRoom, SecondRoom, ThirdRoom, FourthRoom, FifthRoom, SixthRoom, SeventhRoom]
   
    for thisRoom, thisInstance in zip(allRooms, roomInstances):
        if (isinstance(room, FirstRoom) and frwOrBack < 1):
            print("Tim: Wrong way!!!")
            return
        if (isinstance(room, SeventhRoom) and frwOrBack == 1):
            gameDone()
        else:
            if (isinstance(room, thisInstance)):
                goToRoom(allRooms[allRooms.index(thisRoom) + frwOrBack])
       
       
def goToRoom(room):
    """
    This is where the game progresses.
    """ 
    room.viewRoomArt()
    room.roomDescription()
    while room.locked == True:
        room.isTimeForBreak()
        room.isDone()
        gameMenuOptions(room)
   
   
def gameDone():
    """
    This is the end of the game.
    """
    print("Tim: Great job! You made it through the day at the zoo!\nHope to see you soon again!\n")
    adventure.quitAdventure()

EmelieK

javascript-guru

  • Inlägg: 89
  • Blev medlem: 16 aug 2016, 16:31

Re: Kmom10 - UnicodeEncodeError

Inlägg29 okt 2016, 19:53

Här är mitt felmeddelande:

Kod: Markera allt
WARNING pylint failed: 'dbwebb-kurser/python/me/kmom10/adventure/gameEngine.py'
************* Module gameEngine
Traceback (most recent call last):
  File "/usr/local/bin/pylint", line 11, in <module>
    sys.exit(run_pylint())
  File "/usr/local/lib/python3.4/dist-packages/pylint/__init__.py", line 23, in run_pylint
    Run(sys.argv[1:])
  File "/usr/local/lib/python3.4/dist-packages/pylint/lint.py", line 1332, in __init__
    linter.check(args)
  File "/usr/local/lib/python3.4/dist-packages/pylint/lint.py", line 747, in check
    self._do_check(files_or_modules)
  File "/usr/local/lib/python3.4/dist-packages/pylint/lint.py", line 869, in _do_check
    self.check_astroid_module(ast_node, walker, rawcheckers, tokencheckers)
  File "/usr/local/lib/python3.4/dist-packages/pylint/lint.py", line 944, in check_astroid_module
    checker.process_tokens(tokens)
  File "/usr/local/lib/python3.4/dist-packages/pylint/checkers/format.py", line 754, in process_tokens
    self._check_continued_indentation(TokenWrapper(tokens), idx+1)
  File "/usr/local/lib/python3.4/dist-packages/pylint/checkers/format.py", line 845, in _check_continued_indentation
    self._add_continuation_message(state, valid_offsets, tokens, next_idx)
  File "/usr/local/lib/python3.4/dist-packages/pylint/checkers/format.py", line 853, in _add_continuation_message
    args=(readable_type, readable_position, tokens.line(position), hint_line))
  File "/usr/local/lib/python3.4/dist-packages/pylint/checkers/__init__.py", line 101, in add_message
    self.linter.add_message(msg_id, line, node, args, confidence)
  File "/usr/local/lib/python3.4/dist-packages/pylint/utils.py", line 410, in add_message
    (abspath, path, module, obj, line or 1, col_offset or 0), msg, confidence))
  File "/usr/local/lib/python3.4/dist-packages/pylint/reporters/text.py", line 61, in handle_message
    self.write_message(msg)
  File "/usr/local/lib/python3.4/dist-packages/pylint/reporters/text.py", line 51, in write_message
    self.writeln(msg.format(self._template))
  File "/usr/local/lib/python3.4/dist-packages/pylint/reporters/__init__.py", line 94, in writeln
    print(self.encode(string), file=self.out)
UnicodeEncodeError: 'ascii' codec can't encode character '?' in position 73: ordinal not in range(128)

EmelieK

javascript-guru

  • Inlägg: 89
  • Blev medlem: 16 aug 2016, 16:31

Re: Kmom10 - UnicodeEncodeError

Inlägg30 okt 2016, 12:23

Jag får tyvärr lämna in nu utan att ha rättat det här. Det känns jättetråkigt, men jag hittar verkligen inte felet.
Användarvisningsbild

lrc

troubleshooter

  • Inlägg: 389
  • Blev medlem: 11 aug 2016, 21:38
  • Ort: Östersund

Re: Kmom10 - UnicodeEncodeError

Inlägg30 okt 2016, 12:43

Det ser ut som att det är Pylint som kraschar när den försöker skriva ut ett meddelande om något i gameEngine.py. Har du dubbelkollat att du verkligen sparat den filen som UTF-8?

EmelieK

javascript-guru

  • Inlägg: 89
  • Blev medlem: 16 aug 2016, 16:31

Re: Kmom10 - UnicodeEncodeError

Inlägg30 okt 2016, 13:36

Jag är ledsen, men jag vet inte vad du menar med att jag ska ha sparat filen som UTF-8. Jag har ju med # -*- coding: utf-8 -*- i början av min fil. Mer än så vet jag inte vad jag kan göra.

Jag körde också koden nu i inspect, och då pekar den på rad 56, det vill säga metoden gameMenu. Men tyvärr vet jag fortfarande inte vad jag kan göra åt problemet.
Användarvisningsbild

lrc

troubleshooter

  • Inlägg: 389
  • Blev medlem: 11 aug 2016, 21:38
  • Ort: Östersund

Re: Kmom10 - UnicodeEncodeError

Inlägg30 okt 2016, 14:52

# -*- coding: utf-8 -*- berättar för Python vilken teckenuppsättning som skall användas för att läsa filen, men man måste då även se till så att filen verkligen sparas med den uppsättningen också. Hur man gör detta beror på vilken textredigerare man använder sig av. Kör du Atom finns instruktioner här.

EmelieK

javascript-guru

  • Inlägg: 89
  • Blev medlem: 16 aug 2016, 16:31

Re: Kmom10 - UnicodeEncodeError

Inlägg30 okt 2016, 15:04

Alltså, länge leve dig, lrc! Tycks fungera nu.

Tack så jättemycket!

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 12 gäster