Member 12952906 Ответов: 1

Print получает текст и [] в то время как [] должен содержать данные


У меня есть эта переменная, чтобы отслеживать, в какой комнате вы находитесь, вестибюль-1, лестница-2,коридор-3 и т. д. он обновляется обычной математикой из raw_input

currenKamer = 1


Это код, который показывает, где вы находитесь, где вы могли бы двигаться, но он возвращается "ко naartoe Кан Йе []"...Что я упускаю?

def showRoom(self):
    #kamer
    print(20 * "-")
    print("Hier ben je: " + kamers[currentKamer]["naam"])
    print("hier kan je naartoe: %s ") % [i['naam'] for i in kamers.values() if i.get('currentKamer',None) ]
    #leuk zinnetje per kamer
    if "note" in kamers[currentKamer]:
        print (20 * "-")
        print("--" + kamers[currentKamer]["note"])
    print(20 * "-")


Что я уже пробовал:

[i['naam'] for i in kamers.values() if i.get == currenKamer ]

и
[i['naam'] for i in kamers.values() if i.get(currentKamer) ]

Оба не возвращают ничего, кроме []

Member 12952906

Я совсем забыл!, Это планировка комнаты

kamers = {

            1 : {  "naam"  : "de Lobby" ,
                   "trap"  : 2,
                   "gangrechtdoor" : 3 }  ,

            2 : {  "naam"  : "de Trap" ,
                   "lobby"  : 1,
                   "note"  : "Terwijl je de trap oploopt hoor je in de verte Henk van Ommen schreeuwen" }  ,            

            3 : {  "naam"  : "de Gang rechtdoor" ,
                   "lobby" : 1,
                   "gymzaal" : 4, 
                   "concergie"  : 5,
                   "gangaula"  : 6 } ,
                   
            4 : {  "naam"  : "de Gymzaal" ,
                   "gangrechtdoor" : 3 } ,
            
            5 : {  "naam"  : "de Concierge" ,
                   "raamwim" : 9,
                   "gangrechtdoor" : 3 } ,
            
            6 : {  "naam"  : "de Gang rii aula" ,
                   "gangrechtdoor" : 3,
                   "juul" : 7 } ,
                   
            7 : {  "naam"  : "het Hokje van Juul" ,
                   "gangaula" : 6,
                   "kantine" : 8 } ,
            
            8 : {  "naam"  : "de Aula kantine" ,
                   "juul" : 7,
                   "raamwim" : 9 } ,
            
            9 : {  "naam"  : "het Loerraampje van wim" ,
                   "kantine" : 8,
                   "concierge" : 5 }
         }

1 Ответов

Рейтинг:
4

Thomas Daniels

Основываясь на вашей планировке комнаты в вашем комментарии, вашем коде и моей способности говорить по-голландски, похоже, что вы хотите получить все значения, которые не являются "naam" или "note", а затем получить имена из "камер" на основе этих идентификаторов.

Я бы перестроил макет, чтобы сделать вещи менее сложными. Я рекомендую такой макет:

kamers = {
    1: { "naam": "de Lobby", "adjacent": [2, 3] }, ...
}
Теперь вы можете просто использовать adjacent значение, чтобы выяснить, в какие комнаты вы можете пойти.

Вы можете сделать это вот так:
[kamers[i]['naam'] for i in kamers[currentKamer]['adjacent']]
for i in kamers[currentKamer]['adjacent'] перебирает каждое целое число в "смежном" списке значений в "камерах" с ключом "currentKamer" в качестве ключа. Затем kamers[i]['naam'] выбирает название комнаты с ключом i.


Member 12952906

Дорогой Программфокс,

Да, это то, о чем я тоже подумал бы, но тогда система перемещения не работает, вы хотите увидеть полный код? пожалуйста посетить (https://github.com/marcoburgman/HBLPythonRPG)

уже большое спасибо за помощь!

Thomas Daniels

Если код движения перестает работать, то я рекомендую иметь оба "соседние" и другие ваши ценности. Тогда и движение, и система "распознавания" работают нормально.

Thomas Daniels

В таком случае я рекомендую иметь оба "смежный" и другие переменные, которые вам нужны. Тогда и система "движения", и система "распознавания" будут работать нормально.

(Правка: извините за двойную публикацию, мой первый комментарий сначала не появился)

Member 12952906

Нет проблем, ну это будет кодирование и кофе для меня в течение следующего часа! спасибо за вашу мудрость! Если все это работает идеально, я приму ваше решение ;)! кстати забавно что вы узнали голландцев

Thomas Daniels

Пожалуйста.

Это мой родной язык; я живу во Фландрии.