2016-12-23 9 views
0

J'essaie de comprendre comment imprimer une chaîne d'une ligne en utilisant une boucle for. S'il y a d'autres moyens que vous connaissez, j'apprécierais l'aide. Je vous remercie. Aussi, essayez de modifier mon code!Comment faire un backspace en python

times = int(input("Enter a number: ")) 
print(times) 
a = 0 
for i in range(times+1): 
    print("*"*i) 
    a += i 
print("Total stars: ") 
print(a) 
print("Equation: ") 
for e in range(1,times+1): 
    print(e) 
    if e != times: 
     print("+") 
    else: 
     pass 

Out:

Enter a number: 5 
* 
** 
*** 
**** 
***** 
Equation: 
1 
+ 
2 
+ 
3 
+ 
4 
+ 
5 

Comment puis-je faire l'équation en une seule ligne comme celui-ci:

1+2+3+4+5 
+1

Vous cherchez '\ b'? http://stackoverflow.com/a/18320507/1248974 – davedwards

+1

C'est probablement ce que vous cherchez - http://stackoverflow.com/questions/11266068/python-avoid-new-line-with-print-command –

+2

Il semble que vous posez accidentellement 2 questions. Le premier: comment faire backspace qui est répondu ci-dessus («\ b»). L'autre est votre vraie question ... qui est parce que chaque impression est sur sa propre ligne. Vous voudriez construire une chaîne et l'imprimer une fois, par opposition à l'impression multiple. Si vous avez l'habitude de java, print fait system.out.println, alors que vous voulez imprimer. Donc construisez d'abord votre chaîne, puis imprimez-la après toutes les itérations – Fallenreaper

Répondre

1

Je ne pense pas que vous pouvez faire un "backspace" après vous avez imprimé. Au moins effacer du terminal ne va pas se faire très facilement. Mais vous pouvez construire la chaîne avant de l'imprimer:

times = int(input("Enter a number: ")) 
print(times) 
a = 0 
for i in range(times+1): 
    print("*"*i) 
    a += i 
print("Total stars: ") 
print(a) 
print("Equation: ") 
equation_string = "" 
for e in range(1,times+1): 
    equation_string += str(e) 
    if e != times: 
     equation_string += "+" 
    else: 
     pass 
print(equation_string) 

Fondamentalement, ce qui se passe est de stocker l'équation temporaire equation_str il est construit comme ceci:

1 
1+ 
1+2 
1+2+ 
... 

Et vous imprimez equation_str une fois qu'il est complètement construit. La sortie du programme modifié est la suivante:

Enter a number: 5 
5 

* 
** 
*** 
**** 
***** 
Total stars: 
15 
Equation: 
1+2+3+4+5 

N'hésitez pas à poster un commentaire si quelque chose n'est pas clair.

0

au lieu de l'original pour la boucle d'imprimer chaque numéro, essayez ceci:

output = '+'.join([str(i) for i in range(1, times + 1)]) 
print(output) 

Explication:

[str(i) for i in range(1, times + 1)] est une compréhension de liste qui retourne une liste de tous vos numéros, convertis en chaînes afin que nous puissions les imprimer.

'+'.join(...) joint chaque élément de votre liste, avec + entre chaque élément.

Alternativement:

Si vous voulez une simple modification à votre code d'origine, vous pouvez simplement supprimer la nouvelle ligne de chaque instruction d'impression avec le mot-clé paramater end et réglez ce paramètre sur une chaîne vide:

print(e, end='') 

(Notez que je suis traité de la question implicite, pas « comment dois-je faire une backspace » question)

0

Trop long pour un commentaire, donc je vais poster ici. Les options de formatage de python peuvent être utiles, si vous avez une séquence que vous souhaitez formater et imprimer. Considérez ce qui suit ...

>>> num = 5  # number of numbers to generate 
>>> n = num-1 # one less used in generating format string 
>>> times = [i for i in range(1,num+1)] # generate your numbers 
>>> ("{}+"*n + "{}=").format(*times)  # format your outputs 
'1+2+3+4+5=' 

Ainsi, bien que cela ne répond pas à votre question, vous pouvez voir que la liste compréhensions peuvent être mis en œuvre pour générer votre liste de valeurs, qui peut ensuite être utilisé dans le format génération. La chaîne de format peut également être produite avec un l.c. mais il devient assez compliqué quand vous voulez incorporer des éléments de chaîne comme le + et = comme montré dans l'exemple ci-dessus.