@sevenup233
2017-09-12T13:48:35.000000Z
字数 2304
阅读 811
PY
1、输入一组数列,和数列的数字数n,求能否将此数列排序成等差数列。
如输入:
4
1 2 3 4
5
1 2 3 4 6
输出:
Possible
Impossible
#定义判断函数def dengcha(n,list):a = 2if 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')breakelse:a += 1if 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 = 0end = 0for i in range(n):if i != 0 and stri[i-1] != stri[i]:end = islice.append(stri[start:end])start = endslice.append(stri[start:n])return(slice)#求平均函数def averange(list):n = len(list)alllen = 0for 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 = 1for i in range(n-1):paper -= list[i+1]if paper < 0:print('No')breakelse:paper += list[i+1]a += 1if 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 = 0if 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) + 360angle = 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 = 1if num == 1:print(1)else:while True:if n*(n+1)/2 < num <= (n+1)*(n+2)/2:print(n+1)breakelse:n += 1#输入a = int(input('num = '))function(a)input('Press Enter to exit')