@sevenup233
2017-09-12T13:48:35.000000Z
字数 2304
阅读 763
PY
1、输入一组数列,和数列的数字数n,求能否将此数列排序成等差数列。
如输入:
4
1 2 3 4
5
1 2 3 4 6
输出:
Possible
Impossible
#定义判断函数
def dengcha(n,list):
a = 2
if n == 1 or n == 2:
print('Possible')
else:
d = list[1]-list[0]
for i in range(n-2):
if list[i+2] - list[i+1] != d:
print('Impossible')
break
else:
a += 1
if a == n:
print('Possible')
#导入数列
length = int(input('length = '))
seqstr = list(input('sequences = '))
sequences = []
while ' ' in seqstr:
seqstr.remove(' ')
for i in seqstr:
sequences.append(int(i))
dengcha(length,sequences)
input('Press Enter to exit')
2、输入一个数字,输出其相反数(数字颠倒后与原数字的和)
如输入:
1382
输出:
4213
#导入数字
num = str(input('num = '))
#计算
def opposite(num):
mun = num[::-1]
sum = int(num) + int(mun)
print(sum)
opposite(num)
input('Press Enter to exit')
3、求字符碎片的平均长度,保留小数点后二位,如aaabbccad中aaa,bb,cc,a,d为碎片,平均长度=(3+2+2+1+1)/5
如输入:
aaabbccc
输出:
2.67
#切片函数
def cut(stri):
n = len(stri)
slice = []
start = 0
end = 0
for i in range(n):
if i != 0 and stri[i-1] != stri[i]:
end = i
slice.append(stri[start:end])
start = end
slice.append(stri[start:n])
return(slice)
#求平均函数
def averange(list):
n = len(list)
alllen = 0
for i in range(n):
alllen += len(list[i])
return('%.2f' % (alllen/n))
#输出函数
def sliceave(stri):
print(averange(cut(stri)))
#导入字符串
string = str(input('string = '))
sliceave(string)
input('Press Enter to exit')
4、老师想要考完试后让学生分组改别人的卷,规则为学生分为n组,先收走第一组的卷子放在桌子上,然后到下一组从卷子上放取出和该组人数相等的卷子分给他们,并将他们的卷子收上来放到之前的卷子下面,以此类推,最后回到第一组,把剩下的卷子全交给第一组批改。
但是会出现两种不好的情况,有人没卷子改,或者有人改到了自己的卷子。
现在输入组数,及每组的学生数,问是否可以避免这两种情况
如输入:
4
4 2 2 2
4
2 7 2 2
输出:
Yes
No
#判断函数
def judge(n,list):
paper = list[0]
a = 1
for i in range(n-1):
paper -= list[i+1]
if paper < 0:
print('No')
break
else:
paper += list[i+1]
a += 1
if a == n:
print('Yes')
#导入
group = int(input('group number = '))
numstr = list(input('numbers of each groups = '))
num = []
while ' ' in numstr:
numstr.remove(' ')
for i in numstr:
num.append(int(i))
judge(group,num)
input('Press Enter to exit')
5、将钟表的指针由一个位置移到另一个位置,输入起始和终止位置的角度数,求转动的最小角度数,若顺时针转n,则输出n,若逆时针转n,则输出-n
如输入:
30
60
40
30
输出:
30
-10
#计算函数,分类讨论
def rotate(start,end):
angle = 0
if abs(start - end) <= 180:
angle = abs(start - end)
if start <= end:
print(angle)
else:
print(-1*angle)
else:
ma = max(start,end)
mi = min(start,end) + 360
angle = abs(ma-mi)
if start > end:
print(angle)
else:
print(-1*angle)
#输入
start = int(input('start time = '))
end = int(input('end time = '))
rotate(start,end)
input('Press Enter to exit')
6、1组数列由n个n组成:122333444455555,输入i,求第i个数字是几。
如输入:
168
输出:
18
#实际上是等差数列判断
def function(num):
n = 1
if num == 1:
print(1)
else:
while True:
if n*(n+1)/2 < num <= (n+1)*(n+2)/2:
print(n+1)
break
else:
n += 1
#输入
a = int(input('num = '))
function(a)
input('Press Enter to exit')