Рекомендованные экспертами подсказки ChatGPT для разработчиков
Для разработчика программного обеспечения наличие набора хорошо продуманных подсказок в вашем арсенале имеет решающее значение для улучшения ваших навыков решения проблем и обеспечения качества вашего кода. Эти подсказки служат сложными упражнениями, которые подталкивают вас к критическому и творческому мышлению, помогая вам стать более опытным разработчиком.
В этой статье я представляю 20 проверенных подсказок, которые должны быть у каждого разработчика программного обеспечения, а также высококачественные примеры, которые помогут вам разобраться с каждой из них. Независимо от того, являетесь ли вы новичком или опытным разработчиком, эти подсказки помогут отточить ваши навыки и углубить понимание концепций программирования.
Преимущества использования подсказок
Использование подсказок ChatGPT предлагает множество преимуществ для разработчиков программного обеспечения:
- Эффективность. Подсказки позволяют разработчикам быстро находить нужную информацию и фрагменты кода без длительного поиска или ручной реализации.
- Производительность. Используя подсказки, разработчики могут сократить время, затрачиваемое на повторяющиеся задачи, что позволит им сосредоточиться на более сложных аспектах своих проектов.
- Расширение знаний. Подсказки дают возможность изучать новые концепции программирования и учиться на ответах модели, расширяя базу знаний разработчиков.
- Расширение творческих возможностей. ChatGPT может предлагать альтернативные точки зрения и творческие решения проблем, побуждая разработчиков мыслить нестандартно.
- Отладка ошибок. Подсказки могут помочь в выявлении и устранении ошибок, предоставляя пошаговые инструкции по отладке.
Подсказка 1: перевернуть строку
Пожалуйста, создайте функцию, которая может изменить заданную строку. Например, если введено «привет», ожидаемым результатом будет «olleh».
Пример:
def reverse_string(s): return s[::-1] print(reverse_string("hello")) # Output: olleh
Подсказка 2: проверьте наличие палиндрома
Убедительно прошу вас создать функцию, определяющую, является ли данная строка палиндромом. Палиндром — это последовательность символов, например, слово, фраза, число или любая другая комбинация, которая остается идентичной при чтении вперед и назад. Например, мадам — это палиндром.
Пример:
def is_palindrome(s): return s == s[::-1] print(is_palindrome("madam")) # Output: True
Подсказка 3: Найдите самое длинное слово в предложении
Пожалуйста, создайте функцию, которая принимает предложение в качестве входных данных и возвращает самое длинное слово, присутствующее в этом предложении. Если есть несколько самых длинных слов, верните первое. Игнорируйте пунктуацию и предполагайте, что слова разделены пробелами.
Пример:
def find_longest_word(sentence): words = sentence.split() return max(words, key=len) print(find_longest_word("The quick brown fox jumps over the lazy dog")) # Output: jumps
Подсказка 4: вычислить последовательность Фибоначчи
Напишите функцию для вычисления последовательности Фибоначчи до заданного числа членов. Последовательность Фибоначчи — это последовательность чисел, в которой каждое число представляет собой сумму двух предшествующих ему чисел. Ряд начинается с цифр 0 и 1.
Пример:
def fibonacci_sequence(n): sequence = [0, 1] while len(sequence) < n: sequence.append(sequence[-1] + sequence[-2]) return sequence print(fibonacci_sequence(10)) # Output: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Подсказка 5: реализовать стек
Создайте класс с именем `Stack`, который реализует функциональность структуры данных стека. Стек должен поддерживать следующие операции: push, pop и peek. Операция push добавляет элемент на вершину стека, операция pop удаляет верхний элемент из стека и возвращает его, а операция peek возвращает верхний элемент, не удаляя его.
Пример:
Stack: def __init__(self): self.stack = [] def push(self, item): self.stack.append(item) def pop(self): if self.is_empty(): return None return self.stack.pop() def peek(self): if self.is_empty(): return None return self.stack[-1] def is_empty(self): return len(self.stack) == 0 stack = Stack() stack.push(1) stack.push(2) stack.push(3) print(stack.peek()) # Output: 3 print(stack.pop()) # Output: 3 print(stack.pop()) # Output: 2
Подсказка 6: проверьте скобки
Напишите функцию, которая принимает строку, содержащую скобки, и определяет, сбалансированы ли скобки и правильно ли они вложены друг в друга. Для каждой открывающей скобки должна быть соответствующая закрывающая скобка.
Пример:
def validate_parentheses(s): stack = [] for char in s: if char == '(': stack.append(char) elif char == ')': if not stack or stack.pop() != '(': return False return len(stack) == 0 print(validate_parentheses("((()))")) # Output: True print(validate_parentheses("(()))")) # Output: False
Подсказка 7: Сортировка массива
Напишите функцию, которая берет массив чисел и сортирует его по возрастанию. Пожалуйста, включите алгоритм сортировки на основе ваших предпочтений.
Пример:
def sort_array(nums): return sorted(nums) print(sort_array([3, 1, 4, 2, 5])) # Output: [1, 2, 3, 4, 5]
Подсказка 8: объединить два отсортированных массива
Напишите функцию, которая берет два отсортированных массива и объединяет их в один отсортированный массив. Объединенный массив должен содержать все элементы из обоих входных массивов в порядке возрастания.
Пример:
def merge_arrays(nums1, nums2): merged = [] i = j = 0 while i < len(nums1) and j < len(nums2): if nums1[i] < nums2[j]: merged.append(nums1[i]) i += 1 else: merged.append(nums2[j]) j += 1 merged.extend(nums1[i:]) merged.extend(nums2[j:]) return merged print(merge_arrays([1, 3, 5], [2, 4, 6])) # Output: [1, 2, 3, 4, 5, 6]
Подсказка 9: найдите недостающее число
Дан массив целых чисел от 1 до n, в котором пропущено одно число, напишите функцию для поиска пропущенного числа.
Пример:
def find_missing_number(nums): n = len(nums) + 1 return (n * (n + 1)) // 2 - sum(nums) print(find_missing_number([1, 2, 4, 5, 6])) # Output: 3
Подсказка 10: удалить дубликаты из массива
Напишите функцию, которая принимает массив целых чисел и удаляет все повторяющиеся элементы, возвращая новый массив без дубликатов. Порядок элементов в новом массиве должен быть таким же, как в исходном массиве.
Пример:
def remove_duplicates(nums): return list(set(nums)) print(remove_duplicates([1, 2, 2, 3, 4, 4, 5])) # Output: [1, 2, 3, 4, 5]
Если вам нужны более 250 мощных кейсов, ориентированных на разработчиков, обратите внимание на эти:
Кроме того, вы также получите скидку 10 % на продукт, если воспользуетесь этим кодом: “CLX1TZ2”.
Подсказка 11: определить простые числа
Создайте функцию, которая принимает целое число в качестве входных данных и проверяет, является ли оно простым числом. Простое число — это положительное целое число больше 1, которое не может быть представлено как произведение двух меньших положительных целых чисел.
Пример:
def is_prime(n): if n < 2: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True print(is_prime(7)) # Output: True print(is_prime(10)) # Output: False
Подсказка 12. Реализуйте бинарный поиск
Напишите функцию, которая выполняет двоичный поиск в отсортированном массиве целых чисел, чтобы найти индекс заданного целевого элемента. Если цель не найдена, вернуть -1.
Пример:
def binary_search(nums, target): left, right = 0, len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return -1 print(binary_search([1, 2, 3, 4, 5], 4)) # Output: 3 print(binary_search([1, 2, 3, 4, 5], 6)) # Output: -1
Подсказка 13: подсчитайте вхождения символа
Напишите функцию, которая принимает строку и символ в качестве входных данных и подсчитывает, сколько раз символ появляется в строке.
Пример:
def count_occurrences(s, char): return s.count(char) print(count_occurrences("hello", "l")) # Output: 2
Подсказка 14: обратный связанный список
Учитывая заголовок односвязного списка, переверните список и верните новый заголовок.
Пример:
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverse_linked_list(head): prev = None curr = head while curr: next_node = curr.next curr.next = prev prev = curr curr = next_node return prev Example usage: head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(3) reversed_head = reverse_linked_list(head) print(reversed_head.val) # Output: 3
Подсказка 15: проверьте наличие анаграмм
Напишите функцию, которая принимает две строки и определяет, являются ли они анаграммами. Анаграмма — это слово или фраза, образованная перестановкой букв другого слова или фразы.
Пример:
def is_anagram(s1, s2): return sorted(s1) == sorted(s2) print(is_anagram("listen", "silent")) # Output: True print(is("hello", "world")) # Output: False
Подсказка 16: реализовать очередь
Создайте класс с именем Queue, который реализует функциональность структуры данных очереди. Очередь должна поддерживать следующие операции: «постановка в очередь», «удаление из очереди» и «просмотр». Операция enqueue добавляет элемент в конец очереди, операция dequeue удаляет передний элемент из очереди и возвращает его, а операция peek возвращает передний элемент, не удаляя его.
def __init__(self): self.queue = [] def enqueue(self, item): self.queue.append(item) def dequeue(self): if self.is_empty(): return None return self.queue.pop(0) def peek(self): if self.is_empty(): return None return self.queue[0] def is_empty(self): return len(self.queue) == 0 queue = Queue() queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) print(queue.peek()) # Output: 1 print(queue.dequeue()) # Output: 1 print(queue.dequeue()) # Output: 2
Подсказка 17. Найдите медиану двух отсортированных массивов
Имея два отсортированных массива nums1
и nums2
размером m
и n
соответственно, верните медиану двух отсортированных массивов.
Пример:
def find_median_sorted_arrays(nums1, nums2): merged = sorted(nums1 + nums2) n = len(merged) if n % 2 == 0: return (merged[n // 2 - 1] + merged[n // 2]) / 2 else: return merged[n // 2] print(find_median_sorted_arrays([1, 3], [2])) # Output: 2.0 print(find_median_sorted_arrays([1, 2], [3, 4])) # Output: 2.5
Подсказка 18: определить, является ли число степенью двойки
Напишите функцию, которая принимает на вход целое число и определяет, является ли оно степенью двойки.
Пример:
def is_power_of_two(n): return n > 0 and (n & (n - 1)) == 0 print(is_power_of_two(4)) # Output: True print(is_power_of_two(5)) # Output: False
Подсказка 19: удалить N-й узел из конца списка
При наличии заголовка связанного списка удалите узел, расположенный n-м от конца списка, и верните обновленный заголовок.
Пример:
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def remove_nth_from_end(head, n): dummy = ListNode(0) dummy.next = head slow = fast = dummy for _ in range(n + 1): fast = fast.next while fast: slow = slow.next fast = fast.next slow.next = slow.next.next return dummy.next # Example usage: head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(3) head = remove_nth_from_end(head, 2) print(head.val) # Output: 1 print(head.next.val) # Output: 3
Подсказка 20: генерировать скобки
Учитывая целое число n
, сгенерируйте все допустимые комбинации скобок длины 2n
.
Пример:
def generate_parentheses(n): result = [] backtrack(result, "", 0, 0, n) return result def backtrack(result, current, open_count, close_count, max_count): if len(current) == max_count * 2: result.append(current) return if open_count < max_count: backtrack(result, current + "(", open_count + 1, close_count, max_count) if close_count < open_count: backtrack(result, current + ")", open_count, close_count + 1, max_count) print(generate_parentheses(3)) # Output: ["((()))", "(()())", "(())()", "()(())", "()()()"]
Заключение
Наличие коллекции проверенных подсказок имеет неоценимое значение для каждого разработчика программного обеспечения. Эти подсказки дают возможность попрактиковаться в написании кода, отточить навыки решения проблем и изучить различные концепции программирования. Работая с этими 50 проверенными подсказками и изучая сопровождающие примеры, вы можете улучшить свои способности и стать более опытным разработчиком программного обеспечения. Не забывайте подходить к каждой подсказке с любопытством, принимайте вызовы и получайте удовольствие от процесса решения проблем с кодом.
Повысьте уровень написания кода с помощью ChatGPT: изучите более 250 мощных линий для достижения максимальной производительности!💻📖 Раскройте потенциал ChatGPT с помощью практических рекомендаций и инновационных идей.
Надеюсь, вам было интересно читать. Если вы хотите поддержать меня как писателя, подпишитесь на стать участником Medium. Это всего 5 долларов США в месяц, поскольку вы получаете неограниченный доступ к Medium.
Стань профессионалом в области чат-ботов всего за 30 дней с ChatGPT Mastery! В этом подробном руководстве представлены стратегии и методы, которые помогут вам раскрыть потенциал ChatGPT и получать ощутимый доход, не полагаясь на уловки или алгоритмы социальных сетей. Получите свою копию сегодня всего за 99 долларов США!
Хотите получить максимальную отдачу от ChatGPT? Ознакомьтесь с нашей коллекцией из более чем 400 мощных строк для ChatGPT! Он полон идей и практической информации, которые помогут вам раскрыть весь потенциал ChatGPT.
"Хотели бы вы продвинуться по карьерной лестнице?" Я делюсь всеми деталями, методами и предложениями по надежному применению!» В этой электронной книге вы узнаете, как освоить DDD в Laravel.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .