鱼C论坛

 找回密码
 立即注册
查看: 3965|回复: 42

[技术交流] Python:每日一题 217

[复制链接]
发表于 2018-12-3 19:27:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-12-9 17:51 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
一个以正负整数组成的列表a,例如:[4, 12]
生成个由元组组成的列表b,每个元组有两个元素,是将a的第n个数平分为两半,分别与列表a前面的元素相加,与后面的元素相加。例子中4分成2和2,第0个元素前面没有所以得到的是(0 + 2, 2 + 12), 第1个元素平分为6,得到的是(4 + 6, 6)。
最终结果是[(2, 14), (10, 6)]
要求:
1. 结果必须都是整数。
2. 需平分的数如果是奇数,则分为最接近的两个数,如5可以分为2和3或者3和2.
3. 元组的第0个元素要求为偶数。例如[2, 6],2平分为1和1,则得到(1, 7),不符合要求,改为分为0和2或者2和0,因此(0, 8)或者(2, 6)都行。同理6也不能分为3和3。即如果不能平分,则分为符合条件的最接近的数。
最终的结果可以是[(0, 8), (4, 4)]


=================================================
希望大家能帮我想一些题目,具体的要求是:
1.难度适中
2.充分利用python的特性
3.最好是自己想出来的
如果有合适的题目,请给我发消息或直接发帖并@我对于出题的鱼油给予奖励。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-3 19:48:31 | 显示全部楼层
本帖最后由 塔利班 于 2018-12-3 20:00 编辑
  1. def fun217(x):
  2.     a,b=x
  3.     a1,b1=a//2,b//2
  4.     a2,b2=a-a1,b-b1
  5.     if a1%2:
  6.         a1,a2=a2,a1
  7.     if (a+b1)%2:
  8.         b1,b2=b2,b1
  9.     return [(a1,a2+b),(a+b1,b2)]
复制代码

点评

列表的长度不限定为2  发表于 2018-12-9 17:51

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-3 21:28:24 | 显示全部楼层
本帖最后由 凌九霄 于 2018-12-5 16:00 编辑

头昏眼花,已经失去思考的能力  。
  1. def func217(L):
  2.     a, b = L[0] // 2, L[1] // 2
  3.     c, d = L[0] % 2, L[1] % 2
  4.     if a % 2 == 0 and b % 2 == 0:
  5.         if c == 0 and d == 0:
  6.             T = [(a, a + L[1]), (b + L[0], b)]
  7.         elif c == 0 and d != 0:
  8.             T = [(a, a + L[1]), (b + L[0], b + 1)]
  9.         elif c != 0 and d == 0:
  10.             T = [(a, a + 1 + L[1]), (b - 1 + L[0], b + 1)]
  11.         elif c != 0 and d != 0:
  12.             T = [(a, a + 1 + L[1]), (b + 1 + L[0], b)]
  13.     elif a % 2 == 0 and b % 2 != 0:
  14.         if c == 0 and d == 0:
  15.             T = [(a, a + L[1]), (b + 1 + L[0], b - 1)]
  16.         elif c == 0 and d != 0:
  17.             T = [(a, a + L[1]), (b + 1 + L[0], b)]
  18.         elif c != 0 and d == 0:
  19.             T = [(a, a + 1 + L[1]), (b + L[0], b)]
  20.         elif c != 0 and d != 0:
  21.             T = [(a, a + 1 + L[1]), (b + L[0], b + 1)]
  22.     elif a % 2 != 0 and b % 2 == 0:
  23.         if c == 0 and d == 0:
  24.             T = [(a - 1, a + 1 + L[1]), (b + L[0], b)]
  25.         elif c == 0 and d != 0:
  26.             T = [(a - 1, a + 1 + L[1]), (b + L[0], b + 1)]
  27.         elif c != 0 and d == 0:
  28.             T = [(a + 1, a + L[1]), (b - 1 + L[0], b + 1)]
  29.         elif c != 0 and d != 0:
  30.             T = [(a + 1, a + L[1]), (b + 1 + L[0], b)]
  31.     elif a % 2 != 0 and b % 2 != 0:
  32.         if c == 0 and d == 0:
  33.             T = [(a - 1, a + 1 + L[1]), (b - 1 + L[0], b + 1)]
  34.         elif c == 0 and d != 0:
  35.             T = [(a - 1, a + 1 + L[1]), (b + 1 + L[0], b)]
  36.         elif c != 0 and d == 0:
  37.             T = [(a + 1, a + L[1]), (b + L[0], b)]
  38.         elif c != 0 and d != 0:
  39.             T = [(a + 1, a + L[1]), (b + L[0], b + 1)]
  40.     return T


  41. import random

  42. L = [random.randint(-10, 10), random.randint(-10, 10)]
  43. print(L)
  44. print(func217(L))
复制代码

稍简化版本,依然
  1. def func217(L):
  2.     A, B, C = L[0] // 2, L[1] // 2, []

  3.     if L[0] % 2 == 0:
  4.         if A % 2 == 0:
  5.             C.append((A, A + L[1]))
  6.         else:
  7.             C.append((A - 1, A + 1 + L[1]))
  8.     else:
  9.         if A % 2 == 0:
  10.             C.append((A, A + 1 + L[1]))
  11.         else:
  12.             C.append((A + 1, A + L[1]))

  13.     if L[1] % 2 == 0:
  14.         if (B % 2 == 0 and L[0] % 2 == 0) or (B % 2 != 0 and L[0] % 2 != 0):
  15.             C.append((B + L[0], B))
  16.         elif (B % 2 == 0 and L[0] % 2 != 0) or (B % 2 != 0 and L[0] % 2 == 0):
  17.             C.append((B - 1 + L[0], B + 1))
  18.     else:
  19.         if (B % 2 == 0 and L[0] % 2 == 0) or (B % 2 != 0 and L[0] % 2 != 0):
  20.             C.append((B + L[0], B + 1))
  21.         elif (B % 2 == 0 and L[0] % 2 != 0) or (B % 2 != 0 and L[0] % 2 == 0):
  22.             C.append((B + 1 + L[0], B))

  23.     return C
复制代码

点评

列表的长度不限定为2  发表于 2018-12-9 17:52

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-3 22:43:28 | 显示全部楼层
本帖最后由 xy123151 于 2018-12-10 00:46 编辑
  1. def fun217(x,y):
  2.     x1,y1=x//2,y//2
  3.     if (x1)%2!=0:x1+=+1
  4.     if (x+y1)%2!=0:y1+=+1
  5.     print([(x1,x+y-x1),(x+y1,y-y1)])
复制代码


点评

列表的长度不限定为2  发表于 2018-12-9 17:53

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-3 23:14:55 | 显示全部楼层
完全不会啊,只能用耿直的方法来
  1. def the217(a):
  2.     result = []
  3.     for i in range(len(a)):
  4.         if i-1 < 0 and a[i]//2%2 == 1:
  5.             result.append((a[i]//2+1, a[i]-a[i]//2-1+a[i+1]))
  6.         elif i-1 < 0 and a[i]//2%2 != 1:
  7.             result.append((a[i]//2, a[i]//2+a[i+1]))
  8.         elif (a[i]//2+a[i-1])%2 == 1 and i+1 == len(a):
  9.             result.append((a[i]//2+1+a[i-1], a[i]-a[i]//2-1))
  10.         elif (a[i]//2+a[i-1])%2 == 1 and i+1 != len(a):     
  11.             result.append((a[i]//2+1+a[i-1], a[i]-a[i]//2-1+a[i+1]))               
  12.         elif (a[i]//2+a[i-1])%2 != 1 and i+1 == len(a):
  13.             result.append((a[i]//2+a[i-1], a[i]//2))
  14.         else:
  15.             result.append((a[i]//2+a[i-1], a[i]-a[i]//2+a[i+1]))

  16.     return result
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 00:47:21 | 显示全部楼层
  1. def main(list_file):
  2.     length = len(list_file)
  3.     new_list = []
  4.     for i in range(0,length):
  5.         if list_file[i] % 2:
  6.             if i == 0:
  7.                 j = ((list_file[i]-1)/2,(list_file[i]+1)/2+list_file[i+1])
  8.             elif i==length-1:
  9.                 j = ((list_file[i]-1)/2+list_file[i-1],(list_file[i]+1)/2)
  10.             else:
  11.                 j = ((list_file[i]-1)/2+list_file[i-1],(list_file[i]+1)/2+list_file[i+1])
  12.         else:
  13.             if (list_file[i]/2) % 2:
  14.                 if i == 0:
  15.                     j = ((list_file[i])/2-1,(list_file[i])/2+1+list_file[i+1])
  16.                 elif i==length-1:
  17.                     j = ((list_file[i])/2-1+list_file[i-1],(list_file[i])/2+1)
  18.                 else:
  19.                     j = ((list_file[i])/2-1+list_file[i-1],(list_file[i])/2+1+list_file[i+1])
  20.             else:
  21.                 if i == 0:
  22.                     j = ((list_file[i])/2,(list_file[i])/2+list_file[i+1])
  23.                 elif i==length-1:
  24.                     j = ((list_file[i])/2+list_file[i-1],(list_file[i])/2)
  25.                 else:
  26.                     j = ((list_file[i])/2+list_file[i-1],(list_file[i])/2+list_file[i+1])
  27.         new_list.append(j)
  28.     print(new_list)
  29.    
  30. 写到头都晕了,应该没错了
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 10:48:52 | 显示全部楼层
  1. class Transfer():
  2.     '''
  3.     将正负整数数字列表list转换成二元组列表[tuple1,tuple2,]
  4.     将list中元素i平分为a和b,无法平分为整数或者平分后不符合以下要求时,可就近调整a,b大小且保证a+b = lst[i]
  5.     要求二元组tuple[0] = list[i-1] + a,tuple[1] = b + list[i+1] 且tuple[0]必须为偶数
  6.     '''
  7.     def __init__(self):
  8.         '''初始化原列表和返回列表'''
  9.         self.__list = list()
  10.         self.__new_list = list()

  11.     def new_list(self):
  12.         return self.__new_list

  13.     @property
  14.     def old_list(self):
  15.         '''获取原列表'''
  16.         return self.__list

  17.     @old_list.setter
  18.     def old_list(self,value):
  19.         '''设值原列表'''
  20.         # 将输入的原列表编辑格式,首尾加上元素0
  21.         edit_value = [0] + value + [0]
  22.         self.__list = edit_value
  23.         # 如果调用old_list方法则自动进入监听模式
  24.         self.listen()

  25.     def listen(self):
  26.         '''监听原列表,如果原列表改变且不为空则执行转换,否则等待'''
  27.         if self.old_list:
  28.             self.__transfer(self.old_list)
  29.         else:
  30.             print('Waiting to get a non empty list...')

  31.     def __transfer(self,value):
  32.         '''转换数据的控制中心,执行将列表元素中偶数和奇数分开处理'''
  33.         print('开始处理数据...')
  34.         # 对原列表元素顺序遍历转换,每个元素都对应一个转换机制且转换后的元素append到返回列表中
  35.         for i in range(1,len(value)-1):
  36.             f0 = value[i-1]
  37.             f2 = value[i+1]
  38.             f1 = value[i]
  39.             if f1 % 2 == 0:
  40.                 self._even_element(f0,f1,f2)
  41.             else:
  42.                 self._odd_element(f0, f1, f2)
  43.         # 计算完成后直接将结果打印
  44.         print('处理结果:',self.new_list())

  45.     def _odd_element(self,f0,f1,f2):
  46.         '''对列表元素为奇数的处理'''
  47.         a, b = (f1 + 1) / 2, (f1 - 1) / 2
  48.         a, b = int(a), int(b)
  49.         if (f0 + a) % 2 == 0:
  50.             tuple_element = (f0 + a, f2 + b)
  51.             self.__new_list.append(tuple_element)
  52.         else:
  53.             tuple_element = (f0 + b, f2 + a)
  54.             self.__new_list.append(tuple_element)

  55.     def _even_element(self,f0,f1,f2):
  56.         '''对列表元素为偶数的处理'''
  57.         a, b = f1 / 2, f1 / 2
  58.         a, b = int(a), int(b)
  59.         if (f0 + a) % 2 == 0:
  60.             tuple_element = (f0 + a, f2 + b)
  61.             self.__new_list.append(tuple_element)
  62.         else:
  63.             tuple_element = (f0 + a - 1, f2 + b + 1)  # or f1 = (f0+a+1,f2+b-1)
  64.             self.__new_list.append(tuple_element)


  65. # 实例化Transfer
  66. tra = Transfer()
  67. # 开启监听,提醒等待设置原理表的值
  68. tra.listen()
  69. # 设置原列表值后,自动进入监听模式,然后进行处理并打印值
  70. tra.old_list = [1,5,4,6,4,7]
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 10:49:50 | 显示全部楼层
  1. def tuple_2_list(lst):
  2.     g_list = []
  3.     new_lst = [0] + lst + [0]
  4.     for i in range(1,len(new_lst)-1):
  5.         # 前一元素为f0,后为f2,f1为当前,f1分为a,b
  6.         f0 = new_lst[i-1]
  7.         f2 = new_lst[i+1]
  8.         f1 = new_lst[i]
  9.         # 第i个元素为偶数
  10.         if f1 % 2 == 0:
  11.             a,b = f1/2,f1/2
  12.             a, b = int(a), int(b)
  13.             # 当前元素加上前一个元素为偶数
  14.             if (f0 + a) % 2 == 0:
  15.                 tuple_element = (f0 + a,f2 + b)
  16.                 g_list.append(tuple_element)
  17.             else:
  18.                 tuple_element = (f0+a-1,f2+b+1)  # or f1 = (f0+a+1,f2+b-1)
  19.                 g_list.append(tuple_element)
  20.         # 第i个元素为奇数
  21.         else:
  22.             a, b= (f1+1)/2,(f1-1)/2
  23.             a,b = int(a),int(b)
  24.             if (f0+a) % 2 == 0:
  25.                 tuple_element = (f0 + a, f2 + b)
  26.                 g_list.append(tuple_element)
  27.             else:
  28.                 tuple_element = (f0 + b, f2 + a)
  29.                 g_list.append(tuple_element)
  30.     return g_list
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 15:20:52 | 显示全部楼层
  1. def fun217(n):
  2.     d = []
  3.     if n[0] / 4 == n[0] // 4:
  4.         d.append((n[0] // 2, n[1] + n[0] // 2))
  5.         if n[1] / 2 == n[1] // 2:
  6.             d.append((n[0] + n[1] // 2, n[1] // 2))
  7.         else:
  8.             if (n[0] + (n[1] + 1) // 2)//2 == (n[0] + (n[1] + 1) / 2)/2:
  9.                 d.append((n[0] + (n[1] + 1) // 2, (n[1] - 1) // 2))
  10.             else:
  11.                 d.append((n[0] + (n[1] - 1) // 2, (n[1] + 1) // 2))
  12.     elif n[0]/2==n[0]//2 and n[0] / 4 != n[0] // 4:
  13.         if (n[0]//2+1+n[1])//4==(n[0]//2+1+n[1])/4:
  14.             d.append((n[0]-(n[0]//2+1),n[0]//2+1+n[1]))
  15.             d.append(((n[0]//2+1+n[1])//2,(n[0]//2+1+n[1])//2))
  16.         else:
  17.             d.append((n[0]-(n[0]//2-1),n[0]//2-1+n[1]))
  18.             d.append((n[0]+n[1]//2,n[1]//2))
  19.     print(d)

  20. fun217([4, 12])
  21. fun217([8, 9])
  22. fun217([2,6])
  23. fun217([10,4])
复制代码

太难了,准备看大佬的代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 15:27:07 | 显示全部楼层
  1. def fun217(list1):
  2.     list2 = []
  3.     for each in range(len(list1)):
  4.         other = list1[each] % 2
  5.         yu = list1[each] / 2
  6.         if other == 0 and yu % 2 != 0:
  7.             if each - 1 < 0:
  8.                 one = int(list1[each] / 2) - 1
  9.                 try:
  10.                     two = list1[each] - one + list1[each + 1]
  11.                 except IndexError:
  12.                     two = list1[each] - one
  13.                 list2.append((one, two))
  14.             else:
  15.                 one = int(list1[each] / 2) - 1 + list1[each - 1]
  16.                 try:
  17.                     two = list1[each] - (int(list1[each] / 2) - 1) + list1[each + 1]
  18.                 except IndexError:
  19.                     two = list1[each] - (int(list1[each] / 2) - 1)
  20.                 list2.append((one, two))
  21.         elif other == 0 and yu % 2 == 0:
  22.             if each - 1 < 0:
  23.                 one = int(list1[each] / 2)
  24.                 try:
  25.                     two = list1[each] - one + list1[each + 1]
  26.                 except IndexError:
  27.                     two = list1[each] - one
  28.                 list2.append((one, two))
  29.             else:
  30.                 try:
  31.                     one = int(list1[each] / 2) + list1[each -1]
  32.                 except IndexError:
  33.                     one = int(list1[each] / 2)
  34.                 try:
  35.                     two = list1[each] - int(list1[each] / 2) + list1[each + 1]
  36.                 except IndexError:
  37.                     two = list1[each] - int(list1[each] / 2)
  38.                 list2.append((one, two))
  39.         elif other != 0 and int(yu) % 2 != 0:
  40.             if each - 1 < 0:
  41.                 one = int(yu) - 1
  42.                 try:
  43.                     two = list1[each] - one + list1[each + 1]
  44.                 except IndexError:
  45.                     two = list1[each] - one
  46.                 list2.append((one, two))
  47.             else:
  48.                 one = int(yu) - 1 + list1[each - 1]
  49.                 try:
  50.                     two = list1[each] - (int(yu) - 1) + list1[each + 1]
  51.                 except IndexError:
  52.                     two = list1[each] - (int(yu) - 1)
  53.                 list2.append((one, two))
  54.         else:
  55.             if each - 1 < 0:
  56.                 one = int(yu)
  57.                 if one % 2 != 0:
  58.                     one = int(yu) - 2
  59.                 try:
  60.                     two = list1[each] - one + list1[each + 1]
  61.                 except IndexError:
  62.                     two = list1[each] - one
  63.                 list2.append((one, two))
  64.             else:
  65.                 one = int(yu) + list1[each - 1]
  66.                 try:
  67.                     two = list1[each] - int(yu) + list1[each + 1]
  68.                 except IndexError:
  69.                     two = list1[each] - int(yu)
  70.                 list2.append((one, two))
  71.     return list2

  72. print(fun217([9, 8, 7, 6]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 16:05:08 | 显示全部楼层
  1. def fun217(x):
  2.     def function_a(a):
  3.         if a%2 == 1:
  4.             if ((a-1)//2)%2 == 0:
  5.                 return [(a-1)//2,(a+1)//2]
  6.             elif ((a-1)//2)%2 != 0:
  7.                 return [(a+1)//2,(a-1)//2]
  8.         if (a/2)%2 == 0:
  9.             return [a//2,a//2]
  10.         if (a/2)%2 != 0:
  11.             return [a//2-1,a//2+1]
  12.     if x[0]%2 != 0 and x[1]%2 == 0 and (x[1]/2)%2 != 0:
  13.         temp = [function_a(x[0]),[int(x[1]/2),int(x[1]/2)]]
  14.     else:
  15.         temp = [function_a(x[0]),function_a(x[1])]
  16.         if (temp[1][0]+x[0])%2 != 0:
  17.             temp[1] = [temp[1][1],temp[1][0]]
  18.     return [(temp[0][0],temp[0][1]+x[1]),(temp[1][0]+x[0],temp[1][1])]

  19. if __name__ == '__main__':
  20.     print('fun217([4,12])=%s'%fun217([4,12]))
  21.     print('fun217([2,6])=%s'%fun217([2,6]))
  22.     print('fun217([5,9])=%s'%fun217([5,9]))
  23.     print('fun217([2,3])=%s'%fun217([2,3]))
  24.     print('fun217([3,2])=%s'%fun217([3,2]))
  25.     print('fun217([3,3])=%s'%fun217([3,3]))
复制代码
  1. fun217([4,12])=[(2, 14), (10, 6)]
  2. fun217([2,6])=[(0, 8), (4, 4)]
  3. fun217([5,9])=[(2, 12), (10, 4)]
  4. fun217([2,3])=[(0, 5), (4, 1)]
  5. fun217([3,2])=[(2, 3), (4, 1)]
  6. fun217([3,3])=[(2, 4), (4, 2)]
复制代码

做到一半发现题目看错了,于是打了个巨丑的补丁

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 19:27:04 | 显示全部楼层
  1. def list_slips(num):
  2.     if num%2 != 0:
  3.         list_slip = (num//2,num//2+1)        
  4.     else:
  5.         if (num//2)%2 != 0:
  6.             list_slip = (num//2-1,num//2+1)
  7.         else:
  8.             list_slip = (num//2,num//2)
  9.     return list_slip


  10. def fun217(list_one):
  11.     relust = list()
  12.     for i in range(len(list_one)):
  13.         if i == 0:
  14.             temp_tuple = (list_slips(list_one[i])[0],list_slips(list_one[i])[1]+list_one[i+1])
  15.         elif i == len(list_one)-1:
  16.             temp_tuple = (list_slips(list_one[i])[0]+list_one[i-1],list_slips(list_one[i])[1])  
  17.         else:
  18.             temp_tuple = (list_slips(list_one[i])[0]+list_one[i-1],list_slips(list_one[i])[1]+list_one[i+1])
  19.         relust.append(temp_tuple)
  20.     return relust


  21. if __name__ == '__main__':
  22.     print(fun217([2,6]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 21:28:24 | 显示全部楼层
  1. a = [4,12]
  2. result = []
  3. if a[0]%4 == 0:
  4.     first = a[0]//2
  5.     second = a[0]//2 + a[1]
  6.     result.append((first,second))
  7. elif a[0]%4 == 1:
  8.     first = a[0]//2 - 1
  9.     second = a[0] //2 + 1 + a[1]
  10.     result.append((first,second))
  11. elif a[0]%4 == 2:
  12.     first = a[0]//2 - 1
  13.     second = a[0]//2 + 1 +a[1]
  14.     result.append((first,second))
  15. else :
  16.     first = a[0]// 2 + 1
  17.     second = a[0] // 2 - 1 + a[1]
  18.     result.append((first,second))
  19.    
  20. if (a[0] + a[1]//2)%2 == 0:
  21.     first = a[0] + a[1]//2
  22.     second = a[1] - a[1]//2
  23.     result.append((first,second))
  24. else:
  25.     first = a[0] + a[1]//2 + 1
  26.     second = a[1] - a[1]//2 - 1
  27.     result.append((first,second))
  28. print(result)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-5 12:05:04 | 显示全部楼层
  1. def fun217(list1):
  2.     list2 = []
  3.     for i in range(len(list1)):
  4.         if i == 0:
  5.             prior = 0
  6.             rear = list1[i + 1]
  7.         elif i == len(list1)-1:
  8.             prior = list1[i - 1]
  9.             rear = 0
  10.         else:
  11.             prior = list1[i - 1]
  12.             rear = list1[i + 1]

  13.         if list1[0] // 2 % 2 == 0:
  14.             a = list1[i] // 2
  15.         else:
  16.             a = list1[i] // 2 - 1
  17.         b = list1[i] - a
  18.         tup = (prior + a, b + rear)
  19.         list2.append(tup)
  20.         
  21.     return list2


  22. print(fun217([4, 12]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-5 17:45:22 | 显示全部楼层
本帖最后由 graceasyi 于 2018-12-5 17:54 编辑
  1. import math

  2. def is_even(d):
  3.     return 0 if d % 2 else 1

  4. def fun217(pl):
  5.     a, b = pl[0], pl[1]
  6.     a0, b0 = math.ceil(a/2), math.ceil(b/2)
  7.     result = ([(a0, a - a0 + b) if is_even(a0) else (a0 - 1, a - (a0 - 1) + b)])
  8.     if is_even(a):
  9.         result.append([(b0 + a, b - b0) if is_even(b0) else (b0 - 1 + a, b - (b0 - 1))][0])
  10.     else:
  11.         result.append([(b0 - 1 + a, b - (b0 - 1)) if is_even(b0) else (b0 + a, b - b0)][0])

  12.     return result

  13. print(fun217([2, 6]))        # (0, 2)(2, 4)--> (0, 8)(4, 4)
  14. print(fun217([4, 12]))      # (2, 2)(6, 6)--> (2, 14)(10, 6)

  15. print(fun217([4, 8]))       # (2,2)(4,4)-->(2,10)(8,4)
  16. print(fun217([4, 9]))       # (2,2)(4,5)-->(2,11)(8,5)
  17. print(fun217([5, 8]))       # (2,3)(3,5)-->(2,11)(8,5)
  18. print(fun217([5, 9]))       # (2,3)(5,4)-->(2,12)(10,4)
复制代码


结果:
[(0, 8), (4, 4)]
[(2, 14), (10, 6)]
[(2, 10), (8, 4)]
[(2, 11), (8, 5)]
[(2, 11), (8, 5)]
[(2, 12), (10, 4)]

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-5 18:21:01 | 显示全部楼层
  1. a=[4,12]
  2. b=[]
  3. b=a+b
  4. c=[]
  5. for i in range(len(a)):
  6.     if((a[i]/2)%2==0):
  7.        j = int(a[i] / 2)
  8.        print(str(a[i]) + "分成两半是:" + str(j))
  9.     else:
  10.        j = int((a[0] + 2) / 2)
  11.        print(str(a[i]) + "分成两半是:" + str(j))
  12.     if (b[i]) :
  13.         b[i] = 0
  14.         b[i - 1] = a[i - 1]
  15.         for i in range(len(b)):
  16.             b[i]=b[i]+j
  17.     c.append(tuple(b))
  18. print(c
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-7 15:47:57 | 显示全部楼层
a=[2,6]
a.insert(0,0)
a.append(0)
res=[]
for i in range(1,len(a)-1):
        t=a[i]//2       
        b1=t+a[i-1]
        if b1%2==1:
                t-=1
                b1-=1       
        b2=a[i]-t+a[i+1]
        res.append((b1,b2))
print(res)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 18:39:05 | 显示全部楼层

你这个代码不是楼主的意思,print(fun217([2,6]))返回的是[(1, 7), (5, 3)],楼主要求元组第0个元素为偶数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 18:46:45 | 显示全部楼层
grf1973 发表于 2018-12-7 15:47
a=[2,6]
a.insert(0,0)
a.append(0)

这个输入a=[4,7],显示的是[(2,9),(6,5)]但是答案是[(2,9),(8,3)]
@冬雪雪冬

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 18:49:08 | 显示全部楼层

print(fun217([4, 7]))显示的是[(2, 9), (7, 4)]
@冬雪雪冬

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表