Параметр «день недели» имеет значение «Истина», если это рабочий день, а параметр «Отпуск» имеет значение «Истина», если мы в отпуске. Мы спим, если это не будний день или мы в отпуске. Верните 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