Я пытаюсь понять, как заставить Python просто опубликовать текст песни - PullRequest
0 голосов
/ 06 октября 2009

Я новичок в программировании на Python, и на одном из моих заданий я должен использовать Python для написания кода, который будет произносить эти слова.

Этот старик, он сыграл одного
Он играл безделушку на моем большом пальце
Паддевок безделушка, дайте собаке кость
Этот старик приехал домой

Этот старик, он сыграл двух
Он играл безукоризненно на моей обуви
Паддевок безделушка, дайте собаке кость
Этот старик приехал домой

Этот старик, он сыграл три
Он играл безделушку на моем колене
Паддевок безделушка, дайте собаке кость
Этот старик приехал, катясь домой

Этот старик, он сыграл четыре
Он играл безделушку в мою дверь
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

Этот старик, он сыграл пять
Он играл безукоризненно в моем улье
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

Этот старик, он сыграл шесть
Он играл безукоризненно на моих палках
Паддвих безделушка, дайте собаке кость
Этот старик приехал домой

Этот старик, он сыграл семь
Он играл в безумие на небесах
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

Этот старик, он сыграл восемь
Он играл в безделушку у моих ворот
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

Этот старик, он сыграл девять
Он играл безукоризненно на моем позвоночнике
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

Этот старик, он сыграл десять
Он снова играл в безумие
Паддевок безделушка, дайте собаке кость
Этот старик приехал кататься домой

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

num = ['one','two','three','four','five','six','nine','ten']
end = ['on my thumb','on my shoe','on my knee','on my door','on my hive','on my sticks','up in heaven','on my gate','on my spine','once again']
z=1

print "This old man, he played",(num)
print "He played knick-knack", (end)
print "Knick-knack paddywhack, give your dog a bone"
print "This old man came rolling home"

Ответы [ 7 ]

5 голосов
/ 06 октября 2009

Подсказка: вам нужно будет использовать цикл

Я бы посмотрел документацию Python Flow Control . Также обратите внимание на функцию range().

Вы можете получить n '-й элемент из массива следующим образом:

val = some_array[n]

И помните, что в Python массивы начинают отсчитываться с 0, а не с 1.

2 голосов
/ 06 октября 2009

Сначала прочитайте о кортежах и списках в Python; затем прочитайте цикл for.

Я предлагаю вам использовать кортеж для хранения вещей, которые идут вместе.

# define a list of tuples
lst = [ ("eggs", "an omelet"), ("bread", "a sandwich"), ("sugar", "cookies") ]

for ingredient, food in lst:
    print "I need", ingredient, "to make", food + "."

Если вы запустите приведенный выше код, вот вывод, который вы получите:

I need eggs to make an omelet.
I need bread to make a sandwich.
I need sugar to make cookies.

Это Pythonic способ решить эту проблему. Вот еще один способ, который мне тоже не нравится:

ingredients = ["eggs", "bread", "sugar"]
foods = ["an omelet", "a sandwich", "cookies"]

for i in range(len(ingredients)):
    print "I need", ingredients[i], "to make", foods[i] + "."

Будет выведен тот же вывод, что и в предыдущем примере, но с ним сложнее работать. Вы должны убедиться, что оба списка остаются синхронизированными. Весь этот «список кортежей» может показаться странным, но на самом деле гораздо проще, когда вы к нему привыкли.

Я предлагаю вам взять книгу Learning Python и изучить ее; это многому вас научит, и это очень ясно.

2 голосов
/ 06 октября 2009

На самом деле есть более Pythonic ответ на вашу домашнюю работу. Опять же, я не могу дать вам это напрямую, но, глядя на документацию loop , вы также можете посмотреть zip . Вы можете многое сделать в Python без непосредственного использования индексных переменных.

0 голосов
/ 06 октября 2009

первая половина бесстыдно скопирована из ответа гвоздя:

# List of rhymes, with each part of the rhyme as another list.
rhymes = ['one','on my thumb'],['two','on my shoe']

for number, position in rhymes:
    # print your output in terms of number and position
0 голосов
/ 06 октября 2009

Ваша рифма поощряет насилие против ирландцев. Тем не менее, вот некоторая помощь.

Так как сами рифмы состоят из двух частей, я поместил каждый рифму как список из двух частей, соединив их в список всех этих рифм.

# List of rhymes, with each part of the rhyme as another list.
rhymes = ['one','on my thumb'],['two','on my shoe']

# The total amount of rhymes len(rhymes) lets us know when to stop...
count = 0
while count < len(rhymes):
    print "This old man, he played "+rhymes[count][0]
    print "He played knick-knack "+rhymes[count][1]
    print "Knick-knack paddywhack, give your dog a bone"
    print "This old man came rolling home \n"
    count += 1
0 голосов
/ 06 октября 2009

Во-первых, вы, вероятно, хотите сказать z = 0, потому что массивы в Python (и большинстве языков программирования) индексируются нулем - первый элемент num равен num[0], второй - num[1] и т. Д. , Хотя нам даже не нужно z. Подробнее об этом позже.

Во-вторых, я бы изменил num и end на nums и endings. Если мы дадим им имя во множественном числе, станет понятнее, что мы используем список. Кроме того, списки - это не отдельные значения, а набор значений. В этом случае нам нужно получить элемент этой коллекции. Мы бы не сказали (nums) (или (num), если вы продолжите в том же духе) - это получит весь список. Мы бы сказали nums[x] (или num[x]), который получает элемент x (помните, что массивы индексируются нулем!), Где x может быть числом, переменной, содержащей число, или любым произвольным выражением, которое вычисляет на номер.

В-третьих, вы можете использовать цикл while, но еще лучше будет цикл for и функции range() и len(). Синтаксис для циклов for:

for x in y:

Где x - временная переменная, а y - список элементов. Цикл перебирает все элементы в y, устанавливая каждый из них в x для тела цикла. Функция range() создает список чисел (который может быть легко использован в качестве индексов массива, подсказка). Функция len() берет список и возвращает длину списка. Объедините их в соответствующем порядке, чтобы создать цикл.

0 голосов
/ 06 октября 2009

Я не уверен, хочу ли я делать твою домашнюю работу, но я дам тебе несколько советов: для меня это выглядит как хорошее место для цикла for. Используйте range, xrange или enumerate.

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