冬雪雪冬 发表于 2018-3-19 22:12:57

Python:每日一题 167

本帖最后由 冬雪雪冬 于 2018-3-22 18:32 编辑

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

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

题目:
已知一个都是由两位数组成的列表(这里是为了简单些,其实可以改为都是由大于1位的多位数组成),例如,现在要把逗号左移一位(不算空格)成为,然后将最后的“5”移到第一个数的前面,得到。
要求编写一个函数return最终的结果,参数为一个两位数组成列表,返回值仍是一个列表。

塔利班 发表于 2018-3-19 22:32:27

def change(x):
    a=str(x)
    a=(a[-1]+a[:-1]).replace(', ','')
    return ) for i in range(0,len(a),2)]

pony马 发表于 2018-3-19 22:39:31

def shift_left_comma(array):#传入一个都是由两位数组成的列表
    array2 = []#将传入列表中的数据个十位拆开,存入新的列表中
    for i in range(len(array)):
      array2.append(array//10)#将十位数写入
      array2.append(array%10)#将个位数写入

    array3 = []
    for i in range(1, len(array2)-1, 2):
      array3.append((array2*10+array2))

    array3.insert(0, (array2+array2*10))

    return array3


list1 =

print(shift_left_comma(list1))
#电脑连不上网,手机发的,没有看见编辑代码的选项,很抱歉对楼主的阅读造成不便

jerryxjr1220 发表于 2018-3-19 22:43:35

def new_list(lst):
    new = [(lst[-1]%10)*10+lst//10]
    for i in range(len(lst)-1):
      new.append((lst%10)*10+lst//10)
    return new

纳兰小寒 发表于 2018-3-19 22:58:53

def change(x):
    str_list = ''
    result = []
    for a in x:
      str_list +=str(a)
    str_change = str_list + str_list[:len(str_list) - 1]
    index = 0
    while (index + 2) <= len(str_change):
      result.append(int(str_change))
      index += 2
    return result
   


a =

b = change(a)

print(b)

°蓝鲤歌蓝 发表于 2018-3-19 23:34:58

def Fun(List):
    n = len(str(List))
    string = ''.join()
    L = string[-1] + string[:-1]
    result = ) for i in range(0, len(L), n)]

    return result

L1 =
l1 = Fun(L1)
print(l1)

L2 =
l2 = Fun(L2)
print(l2)

L3 =
l3 = Fun(L3)
print(l3)

lihw 发表于 2018-3-19 23:53:40

def fun(list1):
    list2=[]
    for i in range(len(list1)):
      if i==0:
            list2.append(list1%10*10+list1//10)
      else:
            list2.append(list1%10*10+list1//10)
    return list2

坑得飞起 发表于 2018-3-20 00:13:08

def fun(list1):
    temp=0
    leng=len(list1)
    for i in range(leng) :
      list1=int(str(temp)+str(list1))
      temp=list1 % 10
      list1=list1//10
    list1+=temp*10
    return list1

lis=input()
lis=lis
list1=lis.split(',')
for i in range(len(list1)):
    list1=int(list1)
print(fun(list1))

小白龙32 发表于 2018-3-20 00:24:22

list1 =

def left_Shift(list):
    list1 = []
    length = len(list)
    for i in range(1,length-1):
      list1.append(list//10+list%10*10)

    list1.insert(0,list//10+list%10*10)
    list1.insert(length-1,list//10+list%10*10)

    return list1

inverseli 发表于 2018-3-20 00:25:22

#给定列表
list1 =
#空列表用于把list1转换成字符串
list2 = []
#用于接收返回的最终结果列表
list3 = []
def temp(list1):
    #把int转换成str类型
    for i in list1:
      i = str(i)
      list2.append(i)
    #转换成长字符串
    str1 = ''.join(list2)
    #把最后一个数字添加到第一个前面
    str2 = str1[-1]+str1
    #分割,两个一组,添加到list3
    for i in range(0,30,2):
      if len(str2) != 0:   
            list3.append(str2)
    print(list3)
temp(list1)      

125zl 发表于 2018-3-20 00:32:19

def move(list1):
    list2 = []
    list2.append(int(list1[-1]) % 10 * 10 + int(list1) // 10)
    for i in range(len(list1) - 1):
      list2.append(int(list1) % 10 * 10 + int(list1) // 10)
    print(list2)
list1 =
move(list1)

晓屁屁 发表于 2018-3-20 00:57:03

本帖最后由 晓屁屁 于 2018-3-20 08:54 编辑

#可以随意改变list1中的数字,添加多位或减少数字
list1 =
list2 = []
list3 = []
list4 = []
def number():
    count = -1
    for i in range(len(list1)):
      for x in range(2):
            list2.append(str(list1))
    try:
      for y in range(len(list2)):
            count += 1
            if y < 1:
                list3.append(list2)
            elif y <= 1:
                list3.append(list2+list2)
            elif 3<y<len(list2)-3 :
                count += 1
                if count < len(list2)-3:
                  list3.append(list2 + list2)
            elif y >= len(list2)-3:
                list3.append(list2 + list2 + list2)
    except IndexError:
      pass
    list5 = []
    list4 = ''.join(list3[-1:])[-1:]
    list4 = (list4+list3).split()
    for b in range(len(list3)):
      if 1<= b < len(list3)-1:
            list4.append(list3)
      else:
            list5.append(list3[:2])
    list4.append(''.join(list5))
    print()
    print()
number()

8306最硬 发表于 2018-3-20 02:08:47

本帖最后由 8306最硬 于 2018-3-20 18:58 编辑

def fun(lst):
    return %10*10 + lst//10 for i in range(len(lst))]def fun(lst):
    lst =
    for i in range(len(lst)):
      lst.insert(0, lst.pop())

    return

shigure_takimi 发表于 2018-3-20 08:21:14

本帖最后由 shigure_takimi 于 2018-3-20 08:35 编辑


##方法一:直接一次循环。
data =

def func(data):
    result = []
    length = len(data)
    for i in range(length):
      if i == length - 1:
            result.append(int(str(data)[-1]+str(data)[:-1]))
      else:
            result.append(int(str(data)[-1]+str(data)[:-1]))
    result.insert(0, result.pop())
    return result
   
print(func(data))

##方法二:啰嗦些。
data =

def func(data):
    x =
    a = []
    for i in x:
      a.append(i[:-1])
      a.append(i[-1])
    a.insert(0, a.pop())
    length = len(a)
    result = []
    for i in range(0, length, 2):
      result.append(int(a+a))
    return result
   
print(func(data)))

天圆突破 发表于 2018-3-20 08:32:04

本帖最后由 天圆突破 于 2018-3-20 10:46 编辑

def change(lst):
    string = ''.join(str(lst).replace(' ','').split(','))
    string = int(string[-1]+string[:-1])
    res = list()
    while string > 0:
      res.insert(0, string%100)
      string //= 100
    return res
更简洁点的方法:
from functools import reduce
def change(lst):
    string = reduce(lambda x,y:x+y, map(lambda x:str(x)+' '+str(x), lst))
    string = (string[-1]+string[:-1])[:-1]
    res = list(map(lambda x: int(x), string.split(' ')))
    return res

if __name__ == '__main__':
    print(change())

yunying12321 发表于 2018-3-20 09:02:25

import random

def fun(b):
    c = []
    q = 0
    b.insert(0,b)
   
    for m in b:
      x = m//10
      y = x + q * 10
      q = m - x*10
      c.append(y)
      
   
    return c
      
      


def main():
    b = []

    #生成b数列,每项均为随机的二位数
    for i in range(10):
      b.append(random.randint(10,100))

    print('原列表',b)
    c = fun(b)
    print('新列表',c)

if __name__ == '__main__':
    main()

溯影 发表于 2018-3-20 09:02:30

def transform(list1):
        temp1 = []
        temp2 = []
        for each in list1:
                first_bit = each // 10
                temp1.append(str(first_bit))

                second_bit = each % 10
                temp2.append(str(second_bit))

        result = []
        for i in range(1,len(temp2)):
                result.append(int(temp2+temp1))

        result.insert(0,int(temp2 + temp1))



        return result

if __name__ == '__main__':
        list1 =
        result = transform(list1)
        print(result)
运行结果:


***Repl Closed***

tsembrace 发表于 2018-3-20 09:25:10

'''
已知一个都是由两位数组成的列表(这里是为了简单些,其实可以改为都是由大于1位的多位数组成)
例如
现在要把逗号左移一位(不算空格)成为
然后将最后的“5”移到第一个数的前面,得到。
要求编写一个函数return最终的结果,参数为一个两位数组成列表,返回值仍是一个列表。
'''
def count_bit(num):
    return len(list(str(num)))

#多位数的
def moveDHfunc(L):
    for i in range(len(L)-1):
      m=L//10
      n=L%10
      L=m
      L=n*(10**(count_bit(L)))+L
    m=L[-1]//10
    n=L[-1]%10
    L[-1]=m
    L=n*(10**(count_bit(L)))+L
    return L
print(moveDHfunc())

graceasyi 发表于 2018-3-20 09:42:37

def func(list1):
    s1 = ''.join()
    s2 = s1[-1] + s1[:-1]
    return ) for i in range(0, len(s2), 2)]


l1 =
print(func(l1))

结果:

阿bang 发表于 2018-3-20 10:02:11

# ! /urs/bin/env python
# coding=utf-8
# __author__ = 'bang'CreateDate:2018/3/20


def change_list(numlist):
    for i in range(len(numlist)):
      numlist = str(numlist)
    str_list = ''.join(numlist)
    new_list = ]
    for k in range(1, len(numlist)-1):
      new_list.append(str_list)
    new_list.append(str_list[-3:])
    for j in range(len(new_list)):
      new_list = int(new_list)
    new_list += new_list[-1] % 10 * 10
    new_list[-1] = new_list[-1] / 10
    return new_list


print change_list()

偷了点懒,直接是针对2位数的。
页: [1] 2 3 4
查看完整版本: Python:每日一题 167