Как создать массив строк с помощью пользовательских данных и распечатать их лексикографически на Python? - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь создать небольшую программу, которая предлагает пользователю ввести 3 слова, затем поместить строковые значения в массив, затем отсортировать массив лексикографически и распечатать массив в виде списка строк.

Iпопробовал функцию .sort, которая не работает.Проект, над которым я работаю, не требует знания циклов (с которыми у меня пока нет большого опыта).

    a = []
    first = input("Type a word: ")
    second = input("Type another word: ")
    third = input("Type the last word: ")
    a += first
    a += second
    a += third

    a = sorted(a)

    print(a)

Я хочу, чтобы напечатанные результаты были тремя словами, разделенными запятыми

 Apple, Banana, Egg

Вместо этого мой код печатает

 ['A', 'B', 'E', 'a', 'a', 'a', 'e', 'g', 'g', 'l', 'n', 'n', 'p', 'p']

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Лучший способ добавить в список - использовать .append

В вашем случае я бы просто сделал:

a = []

first = input("Type a word: ")
second = input("Type another word: ")
third = input("Type the last word: ")

a.append(first)
a.append(second)
a.append(third)

print(sorted(a))

Как только вы закончите добавление чисел в ваш массив (в Python называется списком) просто используйте метод sorted() для лексикографической сортировки ваших слов!

0 голосов
/ 08 февраля 2019

Вместо добавления входных слов в список, вы должны добавить его.Когда вы добавляете строку в список, она разбивает строку на каждый символ, а затем добавляет ее.Потому что вы не можете добавить один тип данных к другому (То же самое, что вы не можете добавить «1» +3, если это не JS, но это совсем другая история).

Итак, вы должны добавить словазатем используйте метод {} .sort (), чтобы отсортировать список и объединить его в строку.

a = []

first = input("Type a word: ")
second = input("Type another word: ")
third = input("Type the last word: ")

a.append(first)
a.append(second)
a.append(third)

a.sort()
finalString = ','.join(a)

print(finalString)
0 голосов
/ 08 февраля 2019

Проблема в том, что += в списке - это объединение двух списков .. и поэтому python интерпретирует вашу строку "Apple" как (распакованный) список ['A', 'p', 'p', 'l', 'e'].

Два разных решения:

1) Сделайте входные данные одним списком со словом:

a = []
first = input("Type a word: ")
second = input("Type another word: ")
third = input("Type the last word: ")
a += [first]
a += [second]
a += [third]

a = sorted(a)

print(a)

или

2) просто используйте метод append, который ожидает один элемент.

a = []
first = input("Type a word: ")
second = input("Type another word: ")
third = input("Type the last word: ")
a.append(first)
a.append(second)
a.append(third)

a = sorted(a)

print(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...