2013-10-07 3 views
0
seq1_values = [5, 40, 180, 13, 30, 20, 25, 24, 29, 31, 54, 46, 42, 50, 67, 17, 
      76, 33, 84, 35, 100, 37, 110, 32, 112, 15, 123, 3, 130, 42] 

def get_num_values(): 
    global seq1_values 
    return len(seq1_values) 

def get_values(): 
    global seq1_values 
    for value in seq1_values: 
     yield value 
    yield None 

def next_value(): 
    return next(next_value.values) 
next_value.values = get_values() 

def main(): 
    numbers = [] 
    value = next_value() 
    while value is not None: 
     numbers.append(value) 
     input_size = len(numbers)-1 
     for i in range(input_size): 
      print("|", str(input_size).rjust(4), end="") 
     for j in range(input_size): 
      print("|", str(value).rjust(4), end="") 
      value = next_value() 
main() 

Вывод должен выглядеть следующим образом:Как укладывать индексы и заданные значения

| 0| 1| 2| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 

| 5| 40| 180| 13| 30| 20| 25| 24| 29| 31| 54| 46| 42| 50| 67| 17| 76| 33| 84| 35| 100| 37| 110| 32| 112| 15| 123| 3| 130| 42| 
+0

что не работает? Где ваши попытки отладить скрипт не удались? – Blender

+0

Мои петли отключены – user88453

+0

Вам действительно нужно добавить более подробную информацию по вашему вопросу. Как они «прочь»? Что точно не работает? – Blender

ответ

0

Ваш вопрос не очень понятно, но от того, что я понимаю, это то, что вы ищете:

>>> def myPrint(L): 
... maxLen = max(len(str(n)) for n in L) 
... print ("|", "|".join(" "*(maxLen-len(str(i))) + str(i) for i in range(len(L))) + "|") 
... print ("|", "|".join(" "*(maxLen-len(str(n))) + str(n) for n in L) + "|") 
... 
>>> myPrint([5, 40, 180, 13, 30, 20, 25, 24, 29, 31, 54, 46, 42, 50, 67, 17, 
...   76, 33, 84, 35, 100, 37, 110, 32, 112, 15, 123, 3, 130, 42]) 
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 
| 5| 40|180| 13| 30| 20| 25| 24| 29| 31| 54| 46| 42| 50| 67| 17| 76| 33| 84| 35|100| 37|110| 32|112| 15|123| 3|130| 42| 
+0

Можете ли вы написать это на python3? Это трудно перевести, не получая желаемого результата – user88453

+0

@ user88453: This_is_ python3. Я скопировал сеанс терминала с python3 – inspectorG4dget

0

Ваш код кажется очень сложным для того, что вы делаете. Вы использовали тег for-loop, но вы используете цикл while - я бы порекомендовал идти с этим циклом. Вы можете перебираем seq1_values, распечатав все индексы, а затем напечатать строку, а затем пройти через еще один раз и напечатать все значения:

seq1_values = [5, 40, 180, 13, 30, 20, 25, 24, 29, 31, 54, 46, 42, 50, 67, 17, 
      76, 33, 84, 35, 100, 37, 110, 32, 112, 15, 123, 3, 130, 42] 


def main(): 
    for s in range(0,len(seq1_values)): 
     print("|",str(s).rjust(3),end="") 
    print("")         # Gives us a new line 
    for s in range(0,len(seq1_values)): 
     print("|",str(seq1_values[s]).rjust(3),end="") 

main() 
0

Вы делаете это намного сложнее, чем это должно быть , Это пахнет домашней работой, поэтому я собираюсь помочь вам в укладке, но после этого все еще нужно быть оправданным, и это не добавляет символ конца строки, поэтому вам придется понять это на своем собственные:

что-то, как это все, что вам нужно для этого в Python3 для укладки его, как вам это нужно:

for idx in range(0, len(seq1_values)): 
    if idx == len(values) - 1: 
     print('| ', idx) 
    else: 
     print('| ', idx, end='') 

for val in len(seq1_values): 
    print('| ', val, end='') 
+0

Немного ошибок в вашем коде. 'len (values)', должно быть 'len (seq1_values)' и 'для val в len (seq1_values):' должно быть 'для val в seq1_values:' – Joseph

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