2013-11-02 3 views
1

Итак, я написал код, а затем выяснил, что есть более простой способ сделать это с помощью функции format(). Моего кодправильный формат формата

r = int(input("Please enter a number ")) 
c = int(input("Please enter a number ")) 
numberLength=len(str(r**c)) 
for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = len(str(i**j)) 
     print(" "*((numberLength-currentNumber)+1),end="") 
     print((i**j),end="")  
    print('') 

, но с помощью функции формата() является более кратким, но я не могу получить формат формат справа.

r = int(input("Please enter a number ")) 
c = int(input("Please enter a number ")) 
numberLength=len(str(r**c)) 
for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = i**j 
     {0:>{1}}.format(currentNumber ,numberLength) 

Если вы запустите первый фрагмент, вы увидите, чего я пытаюсь достичь. Разрыв между каждым числом в таблице зависит от самого большого числа в программе. Спасибо.

ответ

2

Использовать end=' ', по умолчанию python использует новую строку, поэтому все номера были напечатаны на новых строках. И когда конец вложенной петли использует пробел print(), чтобы ввести новую строку.

for i in range(1,r+1): 
    for j in range(1,c+1): 
     currentNumber = i**j 
     print ("{0:>{1}}".format(currentNumber ,numberLength), end=' ') 
    print() 

Демо:

Please enter a number 5 
Please enter a number 5 
    1 1 1 1 1 
    2 4 8 16 32 
    3 9 27 81 243 
    4 16 64 256 1024 
    5 25 125 625 3125 
+0

Ааа! Поэтому я был почти прав, только некоторые скобки не в том месте. Спасибо тебе, друг! – JamesDonnelly

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