Python练习(5)
今日题单
- 古风排版
- 阅览室
- 整除光棍
- 编程团体赛
- 打印沙漏
- 连续因子
- 帅到没朋友
- 天梯赛座位分配
示例代码
古风排版
n = int(input())
s = input()
if len(s) % n != 0:
s += ' ' * (n - len(s) % n)
x = []
for i in range(n):
x = [s[j] for j in range(len(s)) if j % n == i]
x.reverse()
for k in x:
print(k, end='')
print()
阅览室
def time_get(time1, time2):
h1, m1 = map(int, time1.split(':'))
h2, m2 = map(int, time2.split(':'))
return (h2 * 60 + m2) - (h1 * 60 + m1)
n = int(input())
for i in range(n):
data = input().split()
dic = {}
cnt = time = 0
while data[0] != '0':
if data[1] == 'S':
dic[data[0]] = data[2]
else:
if data[0] in dic.keys():
cnt += 1
time += time_get(dic[data[0]], data[2])
del dic[data[0]]
data = input().split()
if cnt != 0:
time = time / cnt
print('%d %.0f' % (cnt, time))
整除光棍
n = int(input())
x = '1'
while True:
if int(x) % n == 0:
print(int(x) // n, len(x))
break
x += '1'
编程团体赛
n = int(input())
dic = {}
for i in range(n):
team, score = input().split()
a, b = team.split('-')
score = int(score)
if a in dic:
dic[a] += score
else:
dic[a] = score
print(max(dic, key=dic.get), dic[max(dic, key=dic.get)])
打印沙漏
n, c = input().split()
n = int(n)
for i in range(1, 100):
if 2 * i ** 2 - 1 > n:
break
x = i - 1
for i in range(x, 0, -1):
print(' ' * (x - i) + c * (2 * i - 1))
for i in range(2, x + 1):
print(' ' * (x - i) + c * (2 * i - 1))
print(n - (2 * i ** 2 - 1))
连续因子
import math
n = int(input())
Max = p = cnt = 0
for i in range(2, int(math.sqrt(n)) + 1):
cnt = 0
x = n
j = i
while x % j == 0:
x //= j
j += 1
cnt += 1
if cnt > Max:
Max = cnt
p = i
if Max == 0:
print('1\n%d' % n)
else:
print(Max)
print('*'.join([str(i) for i in range(p, p+Max)]))
帅到没朋友
n = int(input())
lst = set()
ID = []
for i in range(n):
temp = input().split()
if len(temp) > 2:
for j in range(1, len(temp)):
lst.add(temp[j])
m = int(input())
qst = input().split()
for i in range(m):
if qst[i] not in lst:
lst.add(qst[i])
ID.append(qst[i])
if ID:
print(' '.join(ID))
else:
print('No one is handsome')
天梯赛座位分配
n = int(input())
lst = [0] + list(map(int, input().split()))
Max = max(lst)
team = [[[0 for _ in range(15)] for _ in range(15)] for _ in range(105)]
past = -1
num = 1
for i in range(1, Max+1):
for j in range(1, 11):
for k in range(1, n+1):
if lst[k] < i:
continue
if past == k:
team[k][j][i] = num + 1
num += 2
else:
team[k][j][i] = num
num += 1
past = k
for k in range(1, n+1):
print('#%d' % k)
for i in range(1, Max+1):
if lst[k] < i:
continue
for j in range(1, 10):
print(team[k][j][i], end=' ')
print(team[k][10][i])
到这里,python的专题练习就结束了,想必大家已经很熟练了吧!!!