Объединение элемента словаря со строкой внутри списка - PullRequest
2 голосов
/ 26 мая 2020

, поэтому я пытаюсь создать игру Yahtzee в python, и я пытаюсь набрать очки в таблице, которую я создал. хотя, поскольку строки неизменяемы, я попытался извлечь элемент словаря из списка (который включает таблицу) и объединить его с остальной частью строки. но по какой-то причине мой вывод просто исключает элемент словаря, как будто его там нет.

вот код:

points = {
    "1" : "Ones",
    "2" : "Twos",
    "3" : "Threes",
    "4" : "Fours",
    "5" : "Fives",
    "6" : "Sixes"
}


avaliable_grid = [
    " _____________________________          _____________________________",
    "|           |Player 1|Player 2|        |           |Player 1|Player 2|",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Ones       |" + points["1"] + "|        |        |3 of a Kind|        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Twos       |" + points["2"] + "|        |        |4 of a Kind|        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Threes     |" + points["3"] + " |        |        |Full House |        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Fours      |" + points["4"] + "|        |        |S. Straight|        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Fives      |" + points["5"] + "|        |        |L. Straight|        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Sixes      |" + points["6"] + "|        |        |Chance     |        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|#############################|        |YAHTZEE    |        |        |",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Sum        |        |        |        |#############################|",
    "|-----------|--------|--------|        |-----------|--------|--------|",
    "|Bonus      |        |        |        |TOTAL SCORE|        |        |",
    " -----------------------------          ----------------------------- ",
    ]


def print_table(table):
    for i in table:
        print(i)

print_table(avaliable_grid)    

вывод:

 _____________________________          _____________________________
|           |Player 1|Player 2|        |           |Player 1|Player 2|
|-----------|--------|--------|        |-----------|--------|--------|
|Ones       |        |        |        |3 of a Kind|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Twos       |        |        |        |4 of a Kind|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Threes     |        |        |        |Full House |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Fours      |        |        |        |S. Straight|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Fives      |        |        |        |L. Straight|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Sixes      |        |        |        |Chance     |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|#############################|        |YAHTZEE    |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Sum        |        |        |        |#############################|
|-----------|--------|--------|        |-----------|--------|--------|
|Bonus      |        |        |        |TOTAL SCORE|        |        |
 -----------------------------          ----------------------------- 

для некоторых причина, словарь points[] игнорируется. Кроме того, я печатаю это так, потому что я хочу, чтобы он печатал строка за строкой, без скобок или кавычек.

для справки - я использую python 3.8.2, и я ' м, работающий через IDLE.

1 Ответ

1 голос
/ 26 мая 2020

Поскольку я новичок и не могу комментировать, я просто собираюсь угадать, как мог бы выглядеть остальной код. Я начал с добавления этого, чтобы попытаться воспроизвести ваш результат.

for row in avaliable_grid:
    print(row)

Результат:

_____________________________          _____________________________
|           |Player 1|Player 2|        |           |Player 1|Player 2|
|-----------|--------|--------|        |-----------|--------|--------|
|Ones       |Ones|        |        |3 of a Kind|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Twos       |Twos|        |        |4 of a Kind|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Threes     |Threes |        |        |Full House |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Fours      |Fours|        |        |S. Straight|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Fives      |Fives|        |        |L. Straight|        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Sixes      |Sixes|        |        |Chance     |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|#############################|        |YAHTZEE    |        |        |
|-----------|--------|--------|        |-----------|--------|--------|
|Sum        |        |        |        |#############################|
|-----------|--------|--------|        |-----------|--------|--------|
|Bonus      |        |        |        |TOTAL SCORE|        |        |
 -----------------------------          ----------------------------- 

Итак, в моем выводе я думаю, что ваш код работает так, как задумано. Не могли бы вы объяснить, что вы использовали для печати вывода?

edit: очевидно, что вам еще нужно форматировать, может быть, вы могли бы попробовать использовать pprint или \t, или, может быть, Проще всего было бы просто добавить символы конечного пробела к каждому из значений вашего словаря, чтобы их длина совпадала, и соответствующим образом скорректировать карту.

points = {
    "1" : "Ones  ",
    "2" : "Twos  ",
    "3" : "Threes",
    "4" : "Fours ",
    "5" : "Fives ",
    "6" : "Sixes "
}

edit2: поскольку вы используете python 3.8, вы может использовать форматированные строковые литералы (f-строки). Это действительно быстрый и читаемый способ динамического форматирования ваших строк. Для этого нужно добавить фигурные скобки вокруг кода python внутри строки и добавить символ f перед открытием строки следующим образом:

f"|Ones       | {points["1"]} |        |        |3 of a Kind|        |" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...