目录
题1:Between Markers (simplified)
题1:Between Markers (simplified)
题干:给你一个字符串和两个标记(初始的和最终的)。您必须找到包含在这两个标记之间的子字符串。
输入:三个参数。它们都是字符串。第二个和第三个参数是初始和最终标记。
输出:一个字符串。
注意:python中切片非常万能,此题使用切片,一行解决
def between_markers(text: str, start: str, end: str):
return text[text.index(start)+1:text.index(end)]
print(between_markers('What is >apple<', '>', '<'))
题2:Split Pairs
题干:将字符串分成两个字符对。如果字符串包含奇数个字符,那么最后一对中缺少的第二个字符应该用下划线('_')替换。
输入:一个字符串。
输出:由字符串组成的可迭代对象。
我的思路:
- 第一步:统计字符串a的长度
- 如果长度为偶数
- 第二步:先使用切片,然后将切片得到的数据存入列表中
- 如果长度为奇数
- 第二步:与奇数一样,但是最后一个元素需要拼接下划线('_')
def split_pairs(a):
list1 = []
cnt = len(a)
if cnt % 2 == 0: # 字符串a中有偶数个元素
for i in range(0, cnt, 2):
list1.append(a[i:i+2])
else:
for i in range(0, cnt, 2):
list1.append(a[i:i+2])
list1[-1] += '_'
return list1
print(list(split_pairs('abcd')))
print(list(split_pairs('abc')))
题3:Correct Sentence
题干:对于你的函数的输入,你会得到一个句子。你必须返回一个正确的版本,它以大写字母开始,以句号(点)结束。请注意,并不是所有的修复都是必要的。如果一个句子已经以句号(点)结尾,那么再加一个点就是错误的。
输入:一个字符串。
输出:一个字符串。
def correct_sentence(text: str):
result = text[0].upper() + text[1:] + "." if text[-1] != "." else text[0].upper() + text[1:]
return result
print(correct_sentence('greetings, friends'))
print(correct_sentence('Greetings, friends'))
题4:Is Even
题干:检查给定的数字是否是偶数。如果数字是偶数,函数应该返回True,如果数字是奇数,则返回False。
输入:int。
输出:一个布尔值。
def is_even(num: int):
return num % 2 == 0
print(is_even(2))
print(is_even(5))
题5:Nearest Value
题干:找出与给定值最近的值。你会得到一个集合形式的值列表和一个你需要找到最接近的值。
例如,我们有以下一组数字:4、7、10、11、12、17,我们需要找到与数字9最近的值。如果我们按升序对这个集合排序,那么9的左边是7,右边是10。但是10比7更接近,这意味着正确答案是10。
输入:两个参数。集合形式的值列表。所查找的值是一个整数。
输出:整数int
我的思路:
- 第一步:将集合转化为列表
- 第二步:将给定元素one加入列表中,排序后,找到给定元素one的下标
- 第三步:通过多分支语句考虑给定元素one可能在列表中出现的位置
- 如果one在最开始或者最后位置,最接近它的值就在它旁边
- 如果one在中间的任意位置,需要和两边的数做差,比较
def nearest_value(values: set, one: int):
result = 0
list_val = list(values)
list_val.append(one)
list_val.sort() # 注意:sorted()函数排序,不会改变原来的对象
p = list_val.index(one) # 给定元素one的下标
if list_val[p] == list_val[-1]:
result = list_val[-2]
elif list_val[p] == list_val[0]:
result = list_val[1]
else:
# abs()函数:绝对值
if abs(list_val[p-1]-one) <= abs(list_val[p+1]-one):
result = list_val[p-1]
else:
result = list_val[p+1]
return result
print(nearest_value({4, 7, 10, 11, 12, 17}, 9))
print(nearest_value({4, 7, 10, 11, 12, 17}, 8))
print(nearest_value({4, 8, 10, 11, 12, 17}, 9))
print(nearest_value({0, -2}, -1))