• 注册
  • Python Python 关注:171 内容:11

    服工-实训八

  • 查看作者
  • 打赏作者
    • Python
    • 服工-实训八

      第一题:

      s = input()

      space = 0

      letter = 0

      other = 0

      digit = 0

      for c in s:

          if c.isalpha():

              letter+=1

          elif c.isspace():

              space+=1

          elif c.isdigit():

              digit+=1

          else:

              other+=1

      print(letter,space,digit,other,sep=' ')

      第二题:

      s = list(map(int,input().split()))

      s.sort()

      N=s[0]

      M=s[1]

      while True:

          if M%N==0:

              break

          else:

              temp = N

              N = M%N

              M = temp

      r1 = N

      M=s[1]

      while True:

          if M%s[1]==0 and M%s[0]==0:

              break

          M+=1

      r2 = M

      print('{} {}'.format(r1,r2))

      思考:M+=1的位置 放上面错误!!会丢失一种情况

      辗转相除法求最大公约数

      第三题:循环嵌套 注意range()前闭后开

      n = int(input())

      s = 0

      for i in range(1,n+1,2):

          temp = 1

          for j in range(1,i+1):

              temp *= j

          s = s+temp

      print('n={:},s={:}'.format(n,s))

          

      第四题:一个数同时满足上诉条件

      p = 1

      while True:

          a1 = p%5

          a2 = p%6

          a3 = p%7

          a4 = p%11

          if a1==1 and a2==5 and a3==4 and a4==10:

              break

          p+=1

      print(p)

      第五题:

      import random

      a,n = map(int,input().split())

      random.seed(a)

      i = 0

      while i < n:

          x = random.randint(1,9)

          y = random.randint(1,9)

          print('{}+{}='.format(x,y))

          i+=1

      第六题:

      import random

      x,n = map(int,input().split())

      random.seed(x)

      count = 1

      for i in range(n):

          s = []

          for j in range(23):

              s.append(random.randint(1,365))

          s.sort()

          flag = False

          for i in range(1,len(s)):

              if s[i-1]==s[i]:

                  flag = True

                  break

          if flag:

              count+=1

      print('rate={:.2f}'.format(count/n))

      思考:flag的作用! 审题清楚 判断是否由重复生日 一个就够了

      方法二:利用count()方法判断

      import random

      x,n = map(int,input().split())

      random.seed(x)

      count = 0

      for i in range(n):

          s = []

          for j in range(23):

              s.append(random.randint(1,365))

          for j in s:

              if s.count(j)>1:

                  count+=1

                  break

      print('rate={:.2f}'.format(count/n))

      第七题:

      n = int(input())

      try:

          s = []

          for i in range(n):

              s.append(float(input()))

          avg = sum(s)/n

          print('正确')

          print('avg={:.2f}'.format(avg))

      except ZeroDivisionError:

          print('除0错误,n不能等0')

      except:

          print('数值错误')

      finally:

          print('程序结束')

      思考:恶心 英文的逗号

      第八题:

      s = input()

      try:

          n = int(input())

          print(s[n])

      except:

          print('输入下标有误')

      思考:有问题的都要放在try里面  比如说n的int

      第九题:待解决 错误,请看方式二

      import random

      n = int(input())

      s = 1

      t = []

      for i in range(1,n+1):

          s*=i

          t.append(str(i))

      rate = []

      result = []

      for i in range(s):

          result = result + [''.join(t)]

          rate.extend(t)

          while True:

              random.seed()

              random.shuffle(t)

              for j in range(0,len(rate)-2,3):

                  flag = False

                  if rate[j:j+2] == t:

                      break

                  flag = True

              if flag:

                  break

      print('\n'.join(result))

                      

      方法二: 利用 not in

      import random

      n = int(input())

      s = 1

      t = []

      for i in range(1,n+1):

          s*=i

          t.append(str(i))

      result = [''.join(t)]

      for i in range(s-1):

          while True:

              random.shuffle(t)

              a = ''.join(t)

              if a not in result:

                  break

          result = result + [a]

      result.sort()

      print('\n'.join(result))

      思考:range(s-1)一开始已经添加过元素了!!!

      第十题:

      n = int(input())

      for i in range(1,n+1):

          for j in range(i):

              print(chr(65+j),end='')

          print()

      第十一题:

      n = int(input())

      for i in range(1,n+1):

          id1 = i

          s = []

          for j in range(n-i+1):

              s.append(id1)

              id1 = id1+(n-j)

          temp=''

          for j in s:

              temp=temp+'{: <3}'.format(j)

          print(temp.strip())

      复杂:错误

      n = int(input())

      Max = 0

      for i in range(1,n+1):

          id1 = i

          s = []

          for j in range(n-i+1):

              s.append(id1)

              id1 = id1+(5-j)

          temp=''

          if id1 > Max:

              Max = id1-1

          for j in s:

              length = len(str(Max))+1

              temp=temp+'{: <{:}}'.format(j,length)

          print(temp.strip())

      第十二题:

      error = float(input())

      i = 1

      e1 = i

      while True:

          s = 1

          for j in range(1,i+1):

              s*=j

          e1 = e1 + 1/s

          i+=1

          if 1/s<error:

              print(round(e1,6))

              break

      关键词:服工实训八、Python

      服工-实训八

      请登录之后再进行评论

      登录
      帖子间隔 侧栏位置:
      关闭窗口
      下载海报