Python:每日一题 167
本帖最后由 冬雪雪冬 于 2018-3-22 18:32 编辑我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。
题目:
已知一个都是由两位数组成的列表(这里是为了简单些,其实可以改为都是由大于1位的多位数组成),例如,现在要把逗号左移一位(不算空格)成为,然后将最后的“5”移到第一个数的前面,得到。
要求编写一个函数return最终的结果,参数为一个两位数组成列表,返回值仍是一个列表。 def change(x):
a=str(x)
a=(a[-1]+a[:-1]).replace(', ','')
return ) for i in range(0,len(a),2)] 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))
#电脑连不上网,手机发的,没有看见编辑代码的选项,很抱歉对楼主的阅读造成不便 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 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) 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) 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 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)) 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 #给定列表
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) 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 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 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: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 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()) 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()
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***
'''
已知一个都是由两位数组成的列表(这里是为了简单些,其实可以改为都是由大于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())
def func(list1):
s1 = ''.join()
s2 = s1[-1] + s1[:-1]
return ) for i in range(0, len(s2), 2)]
l1 =
print(func(l1))
结果:
# ! /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位数的。