Параметр «день недели» имеет значение «Истина», если это рабочий день, а параметр «Отпуск» имеет значение «Истина», если мы в отпуске. Мы спим, если это не будний день или мы в отпуске. Верните True, если мы спим.

def sleep_in(weekday, vacation):
  if not weekday or vacation:
    return True
  else:
    return False
  # This can be shortened to: return(not weekday or vacation)

У нас есть две обезьяны, a и b, и параметры a_smile и b_smile указывают, улыбается ли каждая из них. У нас проблемы, если они оба улыбаются или если ни один из них не улыбается. Возвратите True, если у нас проблемы.

def monkey_trouble(a_smile, b_smile):
  if a_smile and b_smile:
    return True
  if not a_smile and not b_smile:
    return True
  return False
 

Учитывая два значения int, вернуть их сумму. Если два значения не совпадают, верните двойную их сумму.

def sum_double(a, b):
  # Store the sum in a local variable
  sum = a + b
  
  # Double it if a and b are the same
  if a == b:
    sum = sum * 2
  return sum

Для заданного int n вернуть абсолютную разницу между n и 21, за исключением возврата двойной абсолютной разницы, если n больше 21.

def diff21(n):
  if n <= 21:
    return 21 - n
  else:
    return (n - 21) * 2

У нас есть громко говорящий попугай. Параметр «час» — текущее время в часе в диапазоне 0..23. У нас проблемы, если попугай говорит, а время до 7 или после 20. Верните True, если у нас проблемы.

def parrot_trouble(talking, hour):
  return (talking and (hour < 7 or hour > 20))

Учитывая 2 целых числа, a и b, верните True, если одно из них равно 10 или если их сумма равна 10.

def makes10(a, b):
  return (a == 10 or b == 10 or a+b == 10)

Учитывая 2 значения int, верните True, если одно отрицательное, а другое положительное. За исключением случаев, когда параметр «отрицательный» имеет значение «Истина», возвращайте значение «Истина», только если оба значения отрицательные.

def pos_neg(a, b, negative):
  if negative:
    return (a < 0 and b < 0)
  else:
    return ((a < 0 and b > 0) or (a > 0 and b < 0))

Получив строку, вернуть новую строку, в которой впереди было добавлено «не». Однако, если строка уже начинается с «не», верните строку без изменений.

def not_string(str):
  if len(str) >= 3 and str[:3] == "not":
    return str
  return "not " + str
  # str[:3] goes from the start of the string up to but not
  # including index 3

Учитывая непустую строку и целое число n, вернуть новую строку, в которой char с индексом n был удален. Значение n будет допустимым индексом char в исходной строке (т. е. n будет находиться в диапазоне 0..len(str)-1 включительно).

def missing_char(str, n):
  front = str[:n]   # up to but not including n
  back = str[n+1:]  # n+1 through end of string
  return front + back

Учитывая строку, вернуть новую строку, в которой были заменены первый и последний символы.

def front_back(str):
  if len(str) <= 1:
    return str
  
  mid = str[1:len(str)-1]  # can be written as str[1:-1]
  
  # last + mid + first
  return str[len(str)-1] + mid + str[0]

Учитывая строку, мы скажем, что передняя часть — это первые 3 символа строки. Если длина строки меньше 3, передняя часть — это все, что есть. Возвращает новую строку, которая представляет собой 3 копии лицевой стороны.

def front3(str):
  # Figure the end of the front
  front_end = 3
  if len(str) < front_end:
    front_end = len(str)
  front = str[:front_end]
  return front + front + front 
  
  # Could omit the if logic, and write simply front = str[:3]
  # since the slice is silent about out-of-bounds conditions.

Учитывая строку и неотрицательное целое число n, вернуть большую строку, которая является n копиями исходной строки.

def string_times(str, n):
  result = ""
  for i in range(n):  # range(n) is [0, 1, 2, .... n-1]
    result = result + str  # could use += here
  return result

Учитывая строку и неотрицательное целое число n, мы скажем, что начало строки — это первые 3 символа или что-то там, если длина строки меньше 3. Возвращает n копий начала строки.

def front_times(str, n):
  front_len = 3
  if front_len > len(str):
    front_len = len(str)
  front = str[:front_len]
  
  result = ""
  for i in range(n):
    result = result + front
  return result

Учитывая строку, вернуть новую строку, состоящую из всех остальных символов, начиная с первого, поэтому «Hello» дает «Hlo».

def string_bits(str):
  result = ""
  # Many ways to do this. This uses the standard loop of i on every char,
  # and inside the loop skips the odd index values.
  for i in range(len(str)):
    if i % 2 == 0:
      result = result + str[i]
  return result

Учитывая непустую строку, такую ​​как «Code», возвращайте строку, такую ​​​​как «CCoCodCode».

def string_splosion(str):
  result = ""
  # On each iteration, add the substring of the chars 0..i
  for i in range(len(str)):
    result = result + str[:i+1]
  return result

Для заданной строки вернуть количество раз, когда подстрока длиной 2 появляется в строке, а также как последние 2 символа строки, поэтому «hixxxhi» дает 1 (мы не будем считать конечную подстроку).

def last2(str):
  # Screen out too-short string case.
  if len(str) < 2:
    return 0
  
  # last 2 chars, can be written as str[-2:]
  last2 = str[len(str)-2:]
  count = 0
  
  # Check each substring length 2 starting at i
  for i in range(len(str)-2):
    sub = str[i:i+2]
    if sub == last2:
      count = count + 1

  return count

Учитывая массив целых чисел, вернуть количество 9 в массиве.

def array_count9(nums):
  count = 0
  # Standard loop to look at each value
  for num in nums:
    if num == 9:
      count = count + 1

  return count

Учитывая массив целых чисел, верните True, если один из первых 4 элементов в массиве равен 9. Длина массива может быть меньше 4.

def array_front9(nums):
  # First figure the end for the loop
  end = len(nums)
  if end > 4:
    end = 4
  
  for i in range(end):  # loop over index [0, 1, 2, 3]
    if nums[i] == 9:
      return True
  return False

Учитывая массив целых чисел, вернуть True, если последовательность чисел 1, 2, 3 появляется где-то в массиве.

def array123(nums):
  # Note: iterate with length-2, so can use i+1 and i+2 in the loop
  for i in range(len(nums)-2):
    if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
      return True
  return False

Учитывая 2 строки, a и b, вернуть количество позиций, где они содержат подстроку одинаковой длины 2. Итак, «xxcaazz» и «xxbaaz» дают 3, поскольку подстроки «xx», «aa» и «az» появляются в одном и том же месте в обеих строках.

def string_match(a, b):
  # Figure which string is shorter.
  shorter = min(len(a), len(b))
  count = 0
  
  # Loop i over every substring starting spot.
  # Use length-1 here, so can use char str[i+1] in the loop
  for i in range(shorter-1):
    a_sub = a[i:i+2]
    b_sub = b[i:i+2]
    if a_sub == b_sub:
      count = count + 1