Какие хорошие вопросы программирования для использования "если ... еще" в Python - PullRequest
10 голосов
/ 03 августа 2010

Каким будет хороший набор упражнений по программированию, который поможет новичкам в Python научиться использовать конструкцию «если ... еще»? Я мог бы приготовить следующее, ты знаешь что-нибудь еще?

  1. Найти наибольшее / наименьшее из трех чисел.
  2. Учитывая дату (год, месяц, день), найдите следующую дату.

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

Ответы [ 11 ]

9 голосов
/ 03 августа 2010

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

Другие возможности (хотя и с вещами, отличными от if утверждений):

  • Охота на Wumpus (возможно, вам придется погуглитьдля этого я показываю свой возраст).
  • Многолетнее «обнаружение победы в игре Tic Tac Toe (Noughts and Crosses)» (вы могли бы сделать это с восемью if операторов, если вам не нужен цикл).
  • Угадайте число от 1 до 100 как можно быстрее (выше, ниже).

Ничего, кроме if/else заявления, високосный год один хорош.Вы также можете рассмотреть следующие вопросы:

  • Проверьте, является ли число кратным 3, 5 или 7.
  • Учитывая возраст, выясните, является ли кто-то ребенком, малышом, ребенком, подростком, взрослый или старый кодер.
  • Рассчитайте оценки AF на основе окончательного процентного показателя.
  • По заданному числу в таблице рулетки определите, является ли он красным / черным, высоким / низким и нечетным / четным.
  • Учитывая руку с блэкджеком, проверьте, хорошо ли это или нет (это хорошо, так как J / Q / K превращается в 10).Вы также можете выяснить, стоит ли брать еще одну карту (например, если их меньше 17).

Это лишь небольшая часть возможностей, с которыми вы могли бы уйти.

8 голосов
/ 03 августа 2010

Трудно для тех, кто много лет программировал, «получить» то, на что похоже начинать с нуля. Я бы держался подальше от всего, что требовало бы более 5 строк кода.

Вам необходимо определить порядок, в котором вы будете охватывать такие вещи, как пользовательский ввод, вывод, если, в противном случае, в течение, для, файла и т. Д.

При освещении ЕСЛИ они уже знают, как получить пользовательский ввод? Распечатать какой-нибудь вывод? Кодировать цикл FOR? Есть ли арифметика на целых числах? Определить, делится ли число на другое число?

Ответы на эти вопросы ограничивают ваши примеры для IF.

Я бы предложил сделать вывод, арифметику, FOR, делимость (модуль), пользовательский ввод перед выполнением IF.

Тогда я могу поставить такие проблемы, как

Print the first 100 odd numbers
Determine the factors of a number entered  by the user
Play a number guessing game (User enters a guess, you print YES or Higher or Lower)
1 голос
/ 03 августа 2010

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

В большинстве случаев я не использую if в качестве альтернативы C ++ switch. Я предпочитаю словарь функций.

Я также стараюсь следовать правилу It's easier to ask forgiveness than permission и предпочитаю ловить исключения.

Я думаю, что ваши примеры должны это учитывать. Так что я бы не использовал идеи monster game или division by zero. Это может быть забавно реализовать, но, на мой взгляд, не очень питонно.

В основном я использую if в качестве фильтра.

Я думаю, вам не следует брать какой-либо сложный алгоритм в качестве примера, если ваша цель - научить синтаксису языка. Обучение программированию, безусловно, является достаточной задачей.

Так что я думаю, что любой глупый пример, подобный приведенному ниже, должен работать.

class Song:
    def __init__(self, title, year):
         self.title = title
         self.year = year

songs = [Song('Blackbird', 1968), Song('Penny Lane', 1967), Song('Jenny Wren', 2005)]
for song in songs:
    if song.year < 1970:
        print song.title, 'by the Beatles'
    else:
        print song.title, 'is not a Beatles song'

Это также может быть 1-й шаг для понимания списка, если вы планируете показать его.

songs = [Song('Blackbird', 1968), Song('Penny Lane', 1967), Song('Jenny Wren', 2005)]
print [song.title for song in songs if song.year<1970]
1 голос
/ 03 августа 2010

Есть множество вариантов здесь.Возможно, пусть они построят простой калькулятор с учетом деления на ноль , нечетных / четных чисел и т. П.

Редактировать: Нашел этот простой упражнениена if-else (в Java), который может быть преобразован в Python.

1 голос
/ 03 августа 2010

Попробуйте простую игру, например, если вы нажмете «L», поверните налево, если вы нажмете «R», поверните направо, если есть монстр, вы умрете и т. Д.

0 голосов
/ 26 сентября 2015

На своей лекции я попросил их выполнить is_between_5_8(x) (я признаю, что нет никакого скрытого мотива с использованием 5 и 8), а потом я дал им упражнения для реализации abs(x) и closest_to_zero(x, y).

Если вы научили их рекурсии, я могу дать вам еще несколько советов:)

0 голосов
/ 03 августа 2010

Вы также можете подготовить начинающих программистов к прохождению теста FizzBuzz . Видя, как это чрезвычайно распространенная функция фильтрации для найма программистов, вы можете сослаться на:

"После выполнения этого задания вы выше 199 из 200 программистов кто претендует на профессиональные должности "

0 голосов
/ 03 августа 2010

Мне нравится проблема "Три человека и обезьяна на острове":

Три человека оказались на необитаемом острове с обезьяной.Они собирают все кокосы и складывают их в большую кучу.Затем в течение ночи каждый мужчина тайно встает, берет 1/3 оставшейся стопки и прячет ее.Когда он разделяет кучу на треть, остается 1, который он дает обезьяне.Затем утром, после того как они все проснулись, они разделили кучу на 1/3 ... с 1 остатком для обезьяны.Сколько кокосов изначально было в куче?

Общая стратегия решения этой проблемы заключается в использовании цикла for для проверки всех чисел от 1 до 10 000 (или другого большого числа).Вам нужно использовать операторы if, чтобы проверить остаток.Позже вы можете расширить эту проблему до более общей проблемы со словами X-men и Y-monkeys ... для этого требуется вложенный цикл for.

0 голосов
/ 03 августа 2010

Одной из лучших является проблема Project Euler # 1.

http://projecteuler.net/index.php?section=problems&id=1

Это требует значительных усилий, чтобы точно выполнить условия if.

0 голосов
/ 03 августа 2010

Как только вы перейдете к циклам и / или функциям, отличным будет «четыре - это волшебство» - четыре - это единственное слово с тем же числом букв, что и число, и, предположительно, все числа сходятся к четырем.Таким образом, игра выглядит примерно так:

seventeen is nine
nine is four
four is magic

или (без учета пробелов):

one hundred is ten
ten is three
three is five
five is four
four is magic

Конечно, если вы просто хотите придерживаться, если / еще в данный момент вы можете честнолегко сделать это для чисел 0-10 и просто иметь серию из 11 блоков if ... else (1-5 и вам понадобится еще меньше).

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