Je suis vraiment nouveau dans le codage (comme dans environ 3 semaines), et j'écris un code dans lequel l'utilisateur est invité à entrer un nombre entre 0 et 100, puis ce nombre est ajouté à une liste. Une fois que la liste atteint une longueur de 10 nombres, elle doit imprimer la liste. J'utilise une fonction pour cela.

Je peux l'obtenir pour qu'il imprime une liste, mais il n'imprime que le premier numéro entré. Par exemple, si j'entre 5, il demandera toujours les autres nombres, mais il imprime la liste comme [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]. De plus, si j'entre un nombre en dehors de la plage de 0 à 100, il vous demande d'entrer un nombre différent, mais il s'arrête et imprime la liste comme «Aucun».

Voici mon code:

def getUser(n):
    mylist = []
    while 0 < n < 100:
        mylist.append(n)
        int(input("Please enter a number between 0 and 100: "))
        if len(mylist) == 10:
            return(mylist)
    else:
        int(input("This number is not in the range of 0-100, please input a different number: "))
    
    
n = int(input("Please enter a number between 0 and 100: "))
print("The numbers you have entered are: ", getUser(n))

Je suppose que cela a à voir avec la boucle while / else, mais comme je l'ai dit, je suis nouveau dans ce domaine et tout cela semble tellement écrasant, et essayer de Google, cela semble juste provoquer des choses super compliquées que je ne comprends pas! ! Merci

2
europamaddie 30 oct. 2020 à 16:04

3 réponses

Meilleure réponse

Premièrement: pourquoi vous obtenez [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]:

int(input("Please enter a number between 0 and 100: "))

Vous devez d'abord donner ceci à n:

n=int(input("Please enter a number between 0 and 100: "))

Ensuite, il sort des boucles parce que vous entrez dans le else, et ensuite vous ne revenez pas dans le while. Puis votre fonction s'est terminée, sans return, donc none

Pour être honnête, je ne comprends pas pourquoi votre code sort de la boucle while si vous donnez un nombre hors de l'intervalle, car la valeur n'est pas donnée à n. Si quelqu'un pouvait expliquer en commentaire, ce serait génial!

Je le ferais comme ça:

def getUser():
    mylist = []
    while len(mylist) < 10:
        n = int(input("Please enter a number between 0 and 100: "))
        
        if (0 < n < 100):
            mylist.append(n)
        else:
            print('This is not between 0 and 100 !')

    return mylist
    
    
print("The numbers you have entered are: ", getUser())

Ensuite, il vous sera demandé un numéro de 0 à 100 (exclu) jusqu'à ce que vous obteniez une taille de 10.

2
Christophe Peter 30 oct. 2020 à 13:50

Alors voici ce que tu faisais de mal

def getUser(n):
    mylist = []
    while 0 < n < 100:
        mylist.append(n)
        n = int(input("Please enter a number between 0 and 100: "))
        if len(mylist) == 10:
            return(mylist)
    else:
        int(input("This number is not in the range of 0-100, please input a different number: "))
    
    
n = int(input("Please enter a number between 0 and 100: "))
print("The numbers you have entered are: ", getUser(n))

Vous remarquez une différence dans le code édité?

Vous n'avez jamais réaffecté la valeur de la variable n Donc, vous ajouteriez simplement la valeur que vous avez passée à getUser à chaque fois (et ce serait la même valeur à chaque fois)

N'ayez pas peur de demander de l'aide si vous êtes coincé!

P.S. Vous pouvez également déplacer une ligne quelque part vers un autre pour qu'elle se comporte un peu mieux si vous êtes à la hauteur du défi;)

0
JackofSpades 30 oct. 2020 à 13:17
def getUser(n):
mylist = []
t = True
while t:
    n =int(input("Please enter a number between 0 and 100: "))
    if n >0 and n<=100:
        mylist.append(n)
    if len(mylist) == 10:
        return(mylist)
        t = False
    elif n < 0  or n >100:
        print('This number is not in the range of 0-100, please input a different number:')
    
        
0
zardasht Jaza 30 oct. 2020 à 13:35