2015-07-25 4 views
2

У меня есть данные в следующей форме.Параметры печати по отношению к фиксированной шкале

Species1 277:A 352:B 423:C 566:D........10000:G 
Species2 247:A 352:B 423:C 566:D........9500:G 
Species3 271:A 349:B 566:C....7500:G 

В каждом случае значения перед двоеточием ':' являются местоположением. Он колеблется от 0 до 10 000. И значение после столбцов - это некоторые данные, которые меня интересуют. Я уже знаю, что значение не превышает 10000. Это означает, что значения могут отображаться на экране по отношению к их местоположению. Другими словами, мы печатаем для каждого вида значения на экране в фиксированном масштабе от 0 до 10 000. Недопустимые значения не печатаются. Возможно ли получить такой вывод на экране в печати? Выход:

Species1 A B C  D       G 
    Species2 A B C  D       G 
    Species3 A B  C     G 

Так символы печатаются в соответствии с их местоположением. Например, G у видов 1 составляет 10 000. Поэтому он печатается в конце. G в видах B находится на уровне 9500, так что он находится только слева от G в видах 1. Таким образом, я хочу, чтобы значения печатались в соответствии с их информацией о местоположении.

+0

Пожалуйста, дайте пример того, что вы хотите печататься (возможно, для меньшего диапазона 0-10). – CrazyCasta

+0

Только что отредактирован, чтобы показать желаемый результат. – user486962

+0

Что такое формат ваших данных? Список, дик, набор? – Clodion

ответ

1

Ну: очень грубое решение, используя список кортежей

sp1=[(277, "A"), (352, "B"), (423, "C"), (566, "D")] 
sp1.sort() 
fact = 80/sp1[-1][0] 
pos = 0 
for elem in sp1: 
    ch = " "*int(elem[0]*fact - pos) + elem[1] 
    pos += len(ch) 
    print(ch, sep="", end = "") 

Нет?

+0

Спасибо. Это действительно полезно. Дает мне право исправить код. Просто дает ошибку на моем экране, но я могу взять это отсюда, я думаю. Большое спасибо за ваш ввод еще раз :) – user486962

1

На том же пути:

sp1=[(277, "A"), (352, "B"), (423, "C"), (566, "D")] 
sp1.sort() 
lst = [" "]*80 
fact = 80/sp1[-1][0] 
for elem in sp1: 
    lst[int(elem[0]*fact-1)] = elem[1] 

print("".join(lst)) 

Выход:

      A   B   C     D 
+0

Большое спасибо. На моем экране он просто печатает «D» в крайнем правом углу. Но это дает мне возможность исправить это. Очень признателен. Еще раз спасибо. – user486962

Смежные вопросы