0
votes

Lors de l'impression / de l'écriture des coordonnées x et y, les nombres> 9 ne correspondent pas

Essayer d'obtenir une simple liste de coordonnées x, y à partir de l'entrée de l'utilisateur, mais les nombres supérieurs à 9 sautent essentiellement une paire. Finit par ressembler à ceci:

1 6

4 9

1

2 7 --- au lieu de 12 7

x = []
y = []

x = input("Write chosen x-coordinate(s) here (with space between each number): ")
y = input("Write chosen y-coordinate(s) here (with space between each number): ")


def datalist():
    global x, y
    for x, y in zip(x, y):
        print(x, y)
datalist()


0 commentaires

4 Réponses :


1
votes
x = input("Write chosen x-coordinate(s) here (with space between each number): ")
y = input("Write chosen y-coordinate(s) here (with space between each number): ")

print(type(x))
print(type(y))
# x and y are strings as input function returns string so you need to split the string to list
x=x.split()
y=y.split()

def datalist():
    global x, y
    for i, j in zip(x, y):
        print(i, j)
datalist()

0 commentaires

1
votes

Définissez x et y comme des chaînes et transformez-les en listes après la saisie de l'utilisateur comme ceci:

x = input("Write chosen x-coordinate(s) here (with space between each number): ")
y = input("Write chosen y-coordinate(s) here (with space between each number): ")


x = x.split()
y = y.split()


def datalist():
    global x, y
    for x, y in zip(x, y):
        print(x, y)
datalist()

Fondamentalement, ce que vous allez faire est de définir x et y comme des chaînes plutôt que des tableaux.

Ensuite, vous utiliserez la fonction split () pour les transformer en listes, avec un espace comme séparateur. (split () sans argument utilise un caractère espace comme séparateur)

Correction de vos lignes d'entrée, qui manquaient d'une parenthèse fermante ")".


0 commentaires

0
votes

À partir de votre code, il semble que vous essayez de créer une liste à partir des entrées, d'où la définition de x et y sur les listes au début. Mais les listes sont alors écrasées par les instructions d'entrée et vous vous retrouvez en fait avec des chaînes. Lorsqu'elle est itérée sur des chaînes, elle ne produit qu'un seul caractère à la fois.

Il existe une approche légère qui permettrait d'atteindre ce que vous recherchez en convertissant les chaînes en listes après les entrées, puis en divisant chaque élément sur un espace:

x = input("Write chosen x-coordinate(s) here (with space between each number): "
y = input("Write chosen y-coordinate(s) here (with space between each number): "


def datalist():
    global x, y
    
    x = x.split(' ')
    y = y.split(' ')

    for x, y in zip(x, y):
        print(x, y)

datalist()


0 commentaires

0
votes

Vous pouvez utiliser split au fur et à mesure que vous recevez des entrées de cette façon et x & y seraient des chaînes.

x = input("Write chosen x-coordinate(s) here (with space between each number):").split()
y = input("Write chosen y-coordinate(s) here (with space between each number):").split()


def datalist():
    global x, y
    for x, y in zip(x, y):
        print(x, y)
datalist()


0 commentaires