Je dois écrire un programme qui accepte un nombre, n, où -6

En d'autres termes, les nombres sont imprimés avec une largeur de champ de 2 et sont justifiés à droite. Les champs sont séparés par un seul espace. Il n'y a pas d'espace après le dernier champ.

Sortie: entrez le numéro de départ: -2

-2 -1  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 30 31 32 

33 34 35 36 37 38 39

Les numéros doivent être directement alignés les uns sous les autres. Je ne sais absolument pas comment faire ça

Voici mon code jusqu'à présent:

start = int(input('Enter the start number: '))
for n in range(n,n+41):

Si vous pouviez m'aider, je l'apprécierais vraiment.

-3
Nathan Kindo 14 mars 2019 à 18:03

2 réponses

Meilleure réponse

Je suppose que vous n'êtes pas autorisé à utiliser une bibliothèque pour tabuler les chiffres pour vous et que vous devez faire la logique vous-même.

Vous devez imprimer 6 rangées de chiffres. Commencez par déterminer le premier numéro de chaque ligne. Cela est donné par range(n,n+42,7) (notez, pas n+41). Pour la valeur de départ -2, ce sont les nombres -2, 5, 12, 19, 26, 33. Tous les autres nombres de la ligne ne sont que les 6 entiers suivants. Si le premier nombre de la ligne est leftmost, alors la ligne entière est donnée par range(leftmost, leftmost + 7). Donc, la première ligne ce sont les nombres -2, -1, 0, 1, 2, 3, 4.

Pour imprimer 6 lignes de 7 nombres, vous avez besoin d'une boucle avec 6 itérations, une pour chaque valeur de leftmost. À l'intérieur de cette boucle, vous imprimez les autres numéros. La seule complication est que tous les nombres de la liste doivent être suivis d'un espace, sauf le dernier . Il faut donc obtenir un traitement spécial.

Vous devez spécifier le format {0:2d} pour vous assurer que "les nombres sont imprimés avec une largeur de champ de 2".

n = -2
for leftmost in range(n,n+42,7):
    for value in range(leftmost,leftmost + 6):
        print("{0:2d}".format(value), end=" ")
    print("{0:2d}".format(leftmost+6))

-2 -1  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 30 31 32
33 34 35 36 37 38 39
1
BoarGules 14 mars 2019 à 15:47

Consultez la bibliothèque tabulate ici, vous pouvez l'utiliser pour formater la sortie - le Le paramètre tablefmt="plain" produit une table très similaire.

Si vous stockez les numéros dans un list, vous pouvez utiliser list slicing pour obtenir les lignes de 7 nombres chacune et les mettre dans une autre liste pour satisfaire le format attendu par tabulate

from tabulate import tabulate

n = 2

while not -6 < n < 2:
    n = int(input('Please submit a number greater than -6 and smaller than 2:\n'))

number_list, output_list = [], []

for i in range(42):
    number_list.append(n + i)

for i in range(6):
    output_list.append(number_list[i*7:i*7+7])

print()
print(
    tabulate(
        output_list, 
        tablefmt='plain'
    )
)

Please submit a number greater than -6 and smaller than 2:
-3                                                        
-3  -2  -1   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  30  31                                
32  33  34  35  36  37  38                                     
0
14 mars 2019 à 15:36