[关闭]
@sevenup233 2017-09-12T13:48:35.000000Z 字数 2304 阅读 763

Python题目 09-10

PY


1、输入一组数列,和数列的数字数n,求能否将此数列排序成等差数列。
如输入:
4
1 2 3 4
5
1 2 3 4 6
输出:
Possible
Impossible

  1. #定义判断函数
  2. def dengcha(n,list):
  3. a = 2
  4. if n == 1 or n == 2:
  5. print('Possible')
  6. else:
  7. d = list[1]-list[0]
  8. for i in range(n-2):
  9. if list[i+2] - list[i+1] != d:
  10. print('Impossible')
  11. break
  12. else:
  13. a += 1
  14. if a == n:
  15. print('Possible')
  16. #导入数列
  17. length = int(input('length = '))
  18. seqstr = list(input('sequences = '))
  19. sequences = []
  20. while ' ' in seqstr:
  21. seqstr.remove(' ')
  22. for i in seqstr:
  23. sequences.append(int(i))
  24. dengcha(length,sequences)
  25. input('Press Enter to exit')

2、输入一个数字,输出其相反数(数字颠倒后与原数字的和)
如输入:
1382
输出:
4213

  1. #导入数字
  2. num = str(input('num = '))
  3. #计算
  4. def opposite(num):
  5. mun = num[::-1]
  6. sum = int(num) + int(mun)
  7. print(sum)
  8. opposite(num)
  9. input('Press Enter to exit')

3、求字符碎片的平均长度,保留小数点后二位,如aaabbccad中aaa,bb,cc,a,d为碎片,平均长度=(3+2+2+1+1)/5
如输入:
aaabbccc
输出:
2.67

  1. #切片函数
  2. def cut(stri):
  3. n = len(stri)
  4. slice = []
  5. start = 0
  6. end = 0
  7. for i in range(n):
  8. if i != 0 and stri[i-1] != stri[i]:
  9. end = i
  10. slice.append(stri[start:end])
  11. start = end
  12. slice.append(stri[start:n])
  13. return(slice)
  14. #求平均函数
  15. def averange(list):
  16. n = len(list)
  17. alllen = 0
  18. for i in range(n):
  19. alllen += len(list[i])
  20. return('%.2f' % (alllen/n))
  21. #输出函数
  22. def sliceave(stri):
  23. print(averange(cut(stri)))
  24. #导入字符串
  25. string = str(input('string = '))
  26. sliceave(string)
  27. input('Press Enter to exit')

4、老师想要考完试后让学生分组改别人的卷,规则为学生分为n组,先收走第一组的卷子放在桌子上,然后到下一组从卷子上放取出和该组人数相等的卷子分给他们,并将他们的卷子收上来放到之前的卷子下面,以此类推,最后回到第一组,把剩下的卷子全交给第一组批改。
  但是会出现两种不好的情况,有人没卷子改,或者有人改到了自己的卷子。
  现在输入组数,及每组的学生数,问是否可以避免这两种情况
如输入:
4
4 2 2 2
4
2 7 2 2
输出:
Yes
No

  1. #判断函数
  2. def judge(n,list):
  3. paper = list[0]
  4. a = 1
  5. for i in range(n-1):
  6. paper -= list[i+1]
  7. if paper < 0:
  8. print('No')
  9. break
  10. else:
  11. paper += list[i+1]
  12. a += 1
  13. if a == n:
  14. print('Yes')
  15. #导入
  16. group = int(input('group number = '))
  17. numstr = list(input('numbers of each groups = '))
  18. num = []
  19. while ' ' in numstr:
  20. numstr.remove(' ')
  21. for i in numstr:
  22. num.append(int(i))
  23. judge(group,num)
  24. input('Press Enter to exit')

5、将钟表的指针由一个位置移到另一个位置,输入起始和终止位置的角度数,求转动的最小角度数,若顺时针转n,则输出n,若逆时针转n,则输出-n
如输入:
30
60
40
30
输出:
30
-10

  1. #计算函数,分类讨论
  2. def rotate(start,end):
  3. angle = 0
  4. if abs(start - end) <= 180:
  5. angle = abs(start - end)
  6. if start <= end:
  7. print(angle)
  8. else:
  9. print(-1*angle)
  10. else:
  11. ma = max(start,end)
  12. mi = min(start,end) + 360
  13. angle = abs(ma-mi)
  14. if start > end:
  15. print(angle)
  16. else:
  17. print(-1*angle)
  18. #输入
  19. start = int(input('start time = '))
  20. end = int(input('end time = '))
  21. rotate(start,end)
  22. input('Press Enter to exit')

6、1组数列由n个n组成:122333444455555,输入i,求第i个数字是几。
如输入:
168
输出:
18

  1. #实际上是等差数列判断
  2. def function(num):
  3. n = 1
  4. if num == 1:
  5. print(1)
  6. else:
  7. while True:
  8. if n*(n+1)/2 < num <= (n+1)*(n+2)/2:
  9. print(n+1)
  10. break
  11. else:
  12. n += 1
  13. #输入
  14. a = int(input('num = '))
  15. function(a)
  16. input('Press Enter to exit')
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注