拼多多8/5笔试题(python)

第一题

把给定的字符串(长度为4的倍数)转着圈的顺时针输出成一个正方形。中间的部分用空格填充。

如输入:

abcdefghijklmnop

会得到:

abcde
p   f
o   g
n   h
mlkji

import sys

str = sys.stdin.readline().strip()
# str = 'abcdefghijklmnop'
n = len(str)

if n%4 !=0:
    print('Error')
else:
    l_line = int(n/4)
    # print(str[:n/4])
    middle = ''
    for i in range (l_line-1):
        line = str[n-(i+1)]
        for j in range(l_line - 1):
            line += ' '
        line += str[l_line + (i + 1)]
        middle += line
        middle += '\n'
    last = ''
    for i in range(l_line+1):
        last += str[n-i-l_line]
    print(str[0:l_line+1]+'\n'+middle + last)
    # print(str[5])

第二题

输入一个由是数字组成的字符串,把他们拆开成两个合法数字(1010拆成1和010不行)。

也可以在他们中间加小数点,变成合法的小数。

比如输入:

1234

输出:

[[1,23], [12, 3],[1,2.3], [1.2, 3]]

这道题的情况挺复杂的,我没有做对。但还是把代码放上来:

import sys
# import math
s = sys.stdin.readline().strip()
# s = '00011'

n=len(s)
out = []
# n1 = []
# n2 = []
out=[]
out1=[]
for i in range(n-1):
    n1 = s[0:i+1]
    n2 = s[i+1:n]
    if str(int(n1))==n1 and str(int(n2))==n2:
        out.append([int(n1), int(n2)])
        out1.append([n1, n2])
    else:
        for i in range(n - 1):
            n11 = s[0:i + 1]
            n21 = s[i + 1:n]
            if int(n11)!=0 and int(n21)!=0:
                out.append([int(n11), int(n21)])
                out1.append([n11, n21])
for j in range(len(out1)):
    for k in range(2):
        a = out1[j][k]
        # print(a)
        for w in range(len(a)-1):
            # if a[len(a)-1] !=0:
            n = a[0:len(a)-w-1]+ '.'+a[len(a)-w-1:len(a)]
            # if math.floor(n) != int(n):
            if k == 1:
                out.append([out[j][0], float(n)])
                # print(out)
            if k == 0:
                out.append([float(n), out[j][1]])
print(out)
c = []
for i in range(len(out)):  # 去掉重复坐标
    c.append((out[i][0], out[i][1]))
    c = list(set(c))
print(c)
out = []
for i in range(len(c)):
    out.append([c[i][0], c[i][1]])
print(out)

第三题

找出指定的那个人和谁关系最好,具体表现为共同好友最多。

输入的第一行的两个数分别是总共多少人,指定的那个人的位置。

从第二行开始依次为每个人的好友(用数字表示)。

因此输入:

5 0
1 2 3
3 4
3 4
3 4
1 2 3

会得到:
4

import sys
[n, deter] = map(int, sys.stdin.readline().strip().split(' '))
friend = []
length = []
for i in range(n):
    # print(sys.stdin.readline().strip().split(' '))
    friend.append(sys.stdin.readline().strip().split(' '))
for i in range(n):
    if i == deter:
        length.append(-1)
    else:
        incommon = set(friend[i]) & set(friend[deter])  # 求这两个集合的交集
        length.append(len(incommon))
        # print(length)
big = 0
for i in range(n):
    if length[i] > length[big]:
        big = i
print(big)

第四题没有看……唉……

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值