2
votes

Comment couper correctement la boucle?

Je veux inverser une boucle for telle qu'elle s'arrête à une certaine valeur saisie par l'utilisateur.

Par exemple, s'il y a une liste Hello = [1,2,3,4,5,6 , 7,8] et l'utilisateur entre un 5 y a-t-il un moyen d'obtenir le résultat

4

5

6

7

8 p>

J'ai essayé

user_input = str(input(''))


for i in range(user_input):

   print(Hello[-i -1])

et par exemple j'entre 5,

Je reçois la sortie

8

7

6

5

4


5 commentaires

Essayez: convertissez l'entrée en entier, trouvez l'index de l'élément dans la liste, puis découpez la liste.


Voulez-vous [8, 7, 6, 5,4] ou [4, 5, 6, 7, 8] ?


Comment exactement 4, 5, 6, 7, 8 est-il connecté à l'entrée 5 ? Voulez-vous imprimer les 5 derniers chiffres? Qu'entendez-vous par break ?


Le titre est trompeur. Il s'agit de trancher, pas d'inversion.


Que renvoyer pour user_input = 9?


4 Réponses :


5
votes

Voici un moyen simple:

4
5
6
7
8

sortie:

[4, 5, 6, 7, 8]

Si vous voulez que chaque numéro soit imprimé sur sa propre ligne, vous pouvez le faire comme ceci:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(*Hello[-user_input:], sep='\n')

sortie:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(Hello[-user_input:])


3 commentaires

quand j'imprime (bonjour [-user_input:], sep = '\ n') j'obtiens toujours [4,5,6,7,8]


@BobKim vous avez oublié le * dans print (* hello ... il est utilisé pour décompresser la liste vers la fonction d'impression. Vous pouvez en savoir plus sur le déballage des listes / tuples avec une simple recherche sur google :)


@BobKim btw, n'hésitez pas à marquer ma réponse comme acceptée si vous sentez que cela vous a aidé :)



0
votes

vous pouvez y parvenir en utilisant le découpage en python et la méthode d'index.

La méthode index () trouve l'élément donné dans une liste et renvoie sa position.

code:

hello = [1,2,3,4,5,6,7,8]
i = int(input('enter number: '))

if i in hello and hello.index(i) > 0:
    print(l[hello.index(i)-1:])

else:
    print('cant do this')

vous devriez vérifier si l'élément existe dans la liste ou déformer votre déclaration avec try: sauf, sinon, vous obtiendrez ValueError si l'utilisateur saisit un numéro ne figurant pas dans la liste.

vous devez également implémenter ce qu'il faut faire si l'utilisateur entre le premier élément de la liste ou vous obtiendrez une valeur inattendue.

p>


0 commentaires

0
votes

Je crois comprendre que vous devez trouver un index de la valeur d'entrée dans la liste et découper la liste d'une valeur avant l'index à la fin:

start = Hello.index(user_input) - 1
print(Hello[start:])


0 commentaires

0
votes

Si vous souhaitez inverser votre liste, vous pouvez utiliser list.reverse () . Et pour que le code fasse ce que vous avez mentionné, vous pouvez utiliser ce code:

Hello = [1,2,3,4,5,6,7,8]
a = int(input("Please input your number: "))
if a <= len(Hello):
    Hello.reverse()
    print(Hello[:a])
else:
    print("The value is too big")


0 commentaires