<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【PTA|Python】浙大版《Python 程序設計》題目集:第三章

          共 14290字,需瀏覽 29分鐘

           ·

          2021-07-21 20:32

          第三章習題

          3-1 大于身高的平均值 (10 分)

          題目

          中小學生每個學期都要體檢,要量身高,因為身高可以反映孩子的生長狀況?,F(xiàn)在,一個班的身高已經(jīng)量好了,請輸出其中超過平均身高的那些身高。程序的輸入為一行數(shù)據(jù),其中以空格分隔,每個數(shù)據(jù)都是一個正整數(shù)。程序要輸出那些超過輸入的正整數(shù)的平均數(shù)的輸入值,每個數(shù)后面有一個空格,輸出的順序和輸入的相同。

          輸入格式:

          ?

          在一行輸入中一個班的身高值,以空格分隔。

          輸出格式:

          ?

          在一行輸出超過輸入的平均數(shù)的輸入值,以空格分隔。

          輸入樣例:

          ?

          在這里給出一組輸入。例如:

          143 174 119 127 117 164 110 128

          輸出樣例:

          ?

          在這里給出相應的輸出。例如:

          143 174 164

          解答

          grades=list(map(int,input().split()))
          sum=0
          for i in grades:
              sum+=i
          average_grade=sum/len(grades)
          for i in grades:
              if(i>average_grade):
                  print("{:d} ".format(i),end="")

          3-2 查驗身份證 (15 分)

          題目

          一個合法的身份證號碼由17位地區(qū)、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規(guī)則如下:

          首先對前17位數(shù)字加權(quán)求和,權(quán)重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后將計算的和對11取模得到值Z;最后按照以下關系對應Z值與校驗碼M的值:

          ?

          Z:0 1 2 3 4 5 6 7 8 9 10 M:1 0 X 9 8 7 6 5 4 3 2

          現(xiàn)在給定一些身份證號碼,請你驗證校驗碼的有效性,并輸出有問題的號碼。

          輸入格式:

          ?

          輸入第一行給出正整數(shù)N(≤100)是輸入的身份證號碼的個數(shù)。隨后N行,每行給出1個18位身份證號碼。

          輸出格式:

          ?

          按照輸入的順序每行輸出1個有問題的身份證號碼。這里并不檢驗前17位是否合理,只檢查前17位是否全為數(shù)字且最后1位校驗碼計算準確。如果所有號碼都正常,則輸出All passed。

          輸入樣例1:

          ?

          4

          320124198808240056

          12010X198901011234

          110108196711301866

          37070419881216001X

          輸出樣例1:

          ?

          12010X198901011234

          110108196711301866

          37070419881216001X

          輸入樣例2:

          ?

          2

          320124198808240056

          110108196711301862

          輸出樣例2:

          ?

          All passed

          解答

          def judge(id,weight,checkCode):
              sum=0
              index=0#輔助索引
              # 前17位
              freWords=id[:17]
              # 第18位上的字符
              lastWord=id[-1]
              for i in freWords:
                  if(i<'0' or i>'9'):
                      return False
                  else:
                      sum=sum+weight[index]*int(i)
                      index=index+1
              sum=sum%11
              if checkCode[sum] == lastWord:
                  return True
              else:
                  return False
              
          m=int(input())
          # 統(tǒng)計正確身份證號碼的數(shù)量
          count=0
          # 權(quán)重
          weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
          # 校驗碼
          checkCode=['1','0','X','9','8','7','6','5','4','3','2']

          for i in range(m):
              id=input()
              if judge(id,weight,checkCode) == False:
                  print(id)
              else:
                  count=count+1
          if(count == m):
              print("All passed")

          3-3 輸出字母在字符串中位置索引 (20 分)

          題目

          輸入一個字符串,再輸入兩個字符,求這兩個字符在字符串中的索引。

          輸入格式:

          ?

          第一行輸入字符串 第二行輸入兩個字符,用空格分開。

          輸出格式:

          ?

          從右向左輸出字符和索引,即下標最大的字符最先輸出。每行一個。

          輸入樣例:

          ?

          在這里給出一組輸入。例如:

          pmispsissippi s p

          輸出樣例:

          ?

          在這里給出相應的輸出。例如:

          11 p

          10 p

          8 s

          7 s

          5 s

          4 p

          3 s

          0 p

          解答

          str=input()
          s1,s2=input().split()
          count=len(str)-1
          while count>=0:
              if str[count]==s1 or str[count]==s2:
                  print("{:d} {:s}".format(count,str[count]))
              count=count-1

          3-4 查找指定字符 (15 分)

          題目

          本題要求編寫程序,從給定字符串中查找某指定的字符。

          輸入格式:

          ?

          輸入的第一行是一個待查找的字符。第二行是一個以回車結(jié)束的非空字符串(不超過80個字符)。

          輸出格式:

          ?

          如果找到,在一行內(nèi)按照格式“index = 下標”輸出該字符在字符串中所對應的最大下標(下標從0開始);否則輸出"Not Found"。

          輸入樣例1:

          ?

          m

          programming

          輸出樣例1:

          ?

          index = 7

          輸入樣例2:

          ?

          a

          1234

          輸出樣例2:

          ?

          Not Found

          解答

          提交代碼 - 1

          word=input()
          words=input()
          count=len(words)-1
          while count>=0:
              if words[count] == word:
                  print("index = {:d}".format(count))
                  break
              count-=1
          if count == -1:
              print("Not Found")

          提交代碼 - 2

          word=input()
          words=input()
          if words.find(word) != -1:
              # 反轉(zhuǎn)
              words=words[::-1]
              print("index = {:d}".format(len(words)-words.find(word)-1))
          else:
              print("Not Found")

          3-5 字符轉(zhuǎn)換 (15 分)

          題目

          本題要求提取一個字符串中的所有數(shù)字字符('0'……'9'),將其轉(zhuǎn)換為一個整數(shù)輸出。

          輸入格式:

          ?

          輸入在一行中給出一個不超過80個字符且以回車結(jié)束的字符串。

          輸出格式:

          ?

          在一行中輸出轉(zhuǎn)換后的整數(shù)。題目保證輸出不超過長整型范圍。

          輸入樣例:

          ?

          free82jeep5

          輸出樣例:

          ?

          825

          解答

          提交代碼 - 1

          str=input()
          ans=0
          for i in str:
              if i>='0' and i<= '9':
                  ans=ans*10+int(i)
          print(ans)

          提交代碼 - 2

          str=input()
          ans=[]
          for i in str:
              if i.isdigit():
                  ans.append(i)
          print(int("".join(ans)))

          3-6 求整數(shù)序列中出現(xiàn)次數(shù)最多的數(shù) (15 分)

          題目

          本題要求統(tǒng)計一個整型序列中出現(xiàn)次數(shù)最多的整數(shù)及其出現(xiàn)次數(shù)。

          輸入格式:

          ?

          輸入在一行中給出序列中整數(shù)個數(shù)N(0<N≤1000),以及N個整數(shù)。數(shù)字間以空格分隔。

          輸出格式:

          ?

          在一行中輸出出現(xiàn)次數(shù)最多的整數(shù)及其出現(xiàn)次數(shù),數(shù)字間以空格分隔。題目保證這樣的數(shù)字是唯一的。

          輸入樣例:

          ?

          10 3 2 -1 5 3 4 3 0 3 2

          輸出樣例:

          ?

          3 4

          解答

          a = input().split()[1:]#???
          d = {}
          for b in set(a):
              d[a.count(b)]=b
          max_count = max(d.keys())
          max_number = d.get(max_count)
          print('{} {}'.format(max_number,max_count))

          3-7 求最大值及其下標 (20 分)

          題目

          本題要求編寫程序,找出給定的_n_個數(shù)中的最大值及其對應的最小下標(下標從0開始)。

          輸入格式:

          ?

          輸入在第一行中給出一個正整數(shù)n(1<n≤10)。第二行輸入n個整數(shù),用空格分開。

          輸出格式:

          ?

          在一行中輸出最大值及最大值的最小下標,中間用一個空格分開。

          輸入樣例:

          ?

          6 2 8 10 1 9 10

          輸出樣例:

          ?

          10 2

          解答

          m=int(input())
          integers=list(map(int,input().split()))
          max_interger=max(integers)
          print("{:d} {:d}".format(max_interger,integers.index(max_interger)))

          3-8 字符串逆序 (15 分)

          題目

          輸入一個字符串,對該字符串進行逆序,輸出逆序后的字符串。

          輸入格式:

          ?

          輸入在一行中給出一個不超過80個字符長度的、以回車結(jié)束的非空字符串。

          輸出格式:

          ?

          在一行中輸出逆序后的字符串。

          輸入樣例:

          ?

          Hello World!

          輸出樣例:

          ?

          !dlroW olleH

          解答

          str=input()
          print("{}".format(str[::-1]))

          3-9 字符串轉(zhuǎn)換成十進制整數(shù) (15 分)

          題目

          輸入一個以#結(jié)束的字符串,本題要求濾去所有的非十六進制字符(不分大小寫),組成一個新的表示十六進制數(shù)字的字符串,然后將其轉(zhuǎn)換為十進制數(shù)后輸出。如果在第一個十六進制字符之前存在字符“-”,則代表該數(shù)是負數(shù)。

          輸入格式:

          ?

          輸入在一行中給出一個以#結(jié)束的非空字符串。

          輸出格式:

          ?

          在一行中輸出轉(zhuǎn)換后的十進制數(shù)。題目保證輸出在長整型范圍內(nèi)。

          輸入樣例:

          ?

          +-P-xf4+-1!#

          輸出樣例:

          ?

          -3905

          解答

          提交代碼 - 1

          str=input()
          flag=1
          res=""
          checked=False
          for i in str:
              if (i>='0' and i<='9'or (i>='A' and i<='F'or (i>='a' and i<='f'):
                  res+=i
                  checked=True
              elif i=='-' and checked==False:
                  flag=-1
          if res == '':
              print(0)
          else:
              print(flag*int(res,16))

          提交代碼 - 2

          str=input()
          s="123456789abcdefABCDEF"
          res=""
          for i in str:
              if i in s:
                  res+=i
          if res == "":
              print(0)
          elif str.find(res[0])>str.find('-'):
              print(-int(res,16))
          else:
              print(int(res,16))

          3-10 統(tǒng)計大寫輔音字母 (15 分)

          題目

          英文輔音字母是除A、E、I、O、U以外的字母。本題要求編寫程序,統(tǒng)計給定字符串中大寫輔音字母的個數(shù)。

          輸入格式:

          ?

          輸入在一行中給出一個不超過80個字符、并以回車結(jié)束的字符串。

          輸出格式:

          ?

          輸出在一行中給出字符串中大寫輔音字母的個數(shù)。

          輸入樣例:

          ?

          HELLO World!

          輸出樣例:

          ?

          4

          解答

          提交代碼 - 1

          str=input()
          s="AEIOU"
          count=0
          for i in str:
              if (i>='A' and i<='Z'and (i not in s):
                  count+=1
          print(count)

          提交代碼 - 2

          str=input()
          s="AEIOU"
          count=0
          for i in str:
              if (i.isupper() == 1and (i not in s):
                  count+=1
          print(count)

          3-11 字符串排序 (20 分)

          題目

          本題要求編寫程序,讀入5個字符串,按由小到大的順序輸出。

          輸入格式:

          ?

          輸入為由空格分隔的5個非空字符串,每個字符串不包括空格、制表符、換行符等空白字符,長度小于80。

          輸出格式:

          ?

          按照以下格式輸出排序后的結(jié)果:

          ?

          After sorted:

          每行一個字符串

          輸入樣例:

          ?

          red yellow blue green white

          輸出樣例:

          ?

          After sorted:

          blue

          green

          red

          white

          yellow

          解答

          lst = list(map(str,input().split()))
          lst.sort()
          print("After sorted:")
          for i in lst:
              print(i)

          3-12 求整數(shù)的位數(shù)及各位數(shù)字之和 (15 分)

          題目

          對于給定的正整數(shù)N,求它的位數(shù)及其各位數(shù)字之和。

          輸入格式:

          ?

          輸入在一行中給出一個不超過109的正整數(shù)N。

          輸出格式:

          ?

          在一行中輸出N的位數(shù)及其各位數(shù)字之和,中間用一個空格隔開。

          輸入樣例:

          ?

          321

          輸出樣例:

          ?

          3 6

          解答

          str=input()
          m=len(str)
          sum=0
          for i in str:
              sum=sum+int(i)
          print("{:d} {:d}".format(m,sum))

          3-13 字符串替換 (15 分)

          題目

          本題要求編寫程序,將給定字符串中的大寫英文字母按以下對應規(guī)則替換:

          原字母對應字母
          AZ
          BY
          CX
          DW
          XC
          YB
          ZA

          輸入格式:

          ?

          輸入在一行中給出一個不超過80個字符、并以回車結(jié)束的字符串。

          輸出格式:

          ?

          輸出在一行中給出替換完成后的字符串。

          輸入樣例:

          ?

          Only the 11 CAPItaL LeTtERS are replaced.

          輸出樣例:

          ?

          Lnly the 11 XZKRtaO OeGtVIH are replaced.

          解答

          提交代碼 - 1

          def change(word):
              return chr(ord('A')+25-(ord(word)-ord('A')))
          s=input()
          ans=""
          for i in s:
              if i>='A' and i<='Z':
                  ans+=change(i)
              else:
                  ans+=i
          print(ans)

          提交代碼 - 2

          s=input()
          ans=[]
          for i in s:
              if 'A'<=i<='Z':
                  ans.append(chr(155-ord(i)))
              else:
                  ans.append(i)
          print("".join(ans))

          注意:

          ?

          ord('A')+25-(ord(word)-ord('A'))=ord('A')+25+ord(word)+ord('A')

          ord('A')=65

          65+65+25=155

          所以為 155-ord(word)

          3-14 字符串字母大小寫轉(zhuǎn)換 (15 分)

          題目

          本題要求編寫程序,對一個以“#”結(jié)束的字符串,將其小寫字母全部轉(zhuǎn)換成大寫字母,把大寫字母全部轉(zhuǎn)換成小寫字母,其他字符不變輸出。

          輸入格式:

          ?

          輸入為一個以“#”結(jié)束的字符串(不超過30個字符)。

          輸出格式:

          ?

          在一行中輸出大小寫轉(zhuǎn)換后的結(jié)果字符串。

          輸入樣例:

          ?

          Hello World! 123#

          輸出樣例:

          ?

          hELLO wORLD! 123

          解答

          s=input()
          s=s.replace('#','')
          ans=""
          for i in s:
              if i.islower():
                  ans+=i.upper()
              elif i.isupper():
                  ans+=i.lower()
              else:
                  ans+=i
          print(ans)

          3-15 統(tǒng)計一行文本的單詞個數(shù) (15 分)

          題目

          本題目要求編寫程序統(tǒng)計一行字符中單詞的個數(shù)。所謂“單詞”是指連續(xù)不含空格的字符串,各單詞之間用空格分隔,空格數(shù)可以是多個。

          輸入格式:

          ?

          輸入給出一行字符。

          輸出格式:

          ?

          在一行中輸出單詞個數(shù)。

          輸入樣例:

          ?

          Let's go to room 209.

          輸出樣例:

          ?

          5

          解答

          str = input().split()
          print(len(str))

          3-16 刪除重復字符 (20 分)

          題目

          本題要求編寫程序,將給定字符串去掉重復的字符后,按照字符ASCII碼順序從小到大排序后輸出。

          輸入格式:

          ?

          輸入是一個以回車結(jié)束的非空字符串(少于80個字符)。

          輸出格式:

          ?

          輸出去重排序后的結(jié)果字符串。

          輸入樣例:

          ?

          ad2f3adjfeainzzzv

          輸出樣例:

          ?

          23adefijnvz

          解答

          s = list(set(input()))
          s.sort()
          for i in s:
              print(i,end="")

          3-17 刪除字符 (30 分)

          題目

          輸入一個字符串 str,再輸入要刪除字符 c,大小寫不區(qū)分,將字符串 str 中出現(xiàn)的所有字符 c 刪除。提示:去掉兩端的空格。

          輸入格式:

          ?

          在第一行中輸入一行字符 在第二行輸入待刪除的字符

          輸出格式:

          ?

          在一行中輸出刪除后的字符串

          輸入樣例1: 在這里給出一組輸入。例如:

          ?
              Bee    E

          輸出樣例1: 在這里給出相應的輸出。例如:

          ?

          result: B

          輸入樣例2: 在這里給出一組輸入。例如:

          ?

          7!jdk*!ASyu   !

          輸出樣例2: 在這里給出相應的輸出。例如:

          ?

          result: 7jdk*ASyu

          解答

          str = input().strip()
          word = input().strip()
          str = str.replace(word.upper(),'').replace(word.lower(),'')
          print("result: {}".format(str))

          3-18 輸出10個不重復的英文字母 (30 分)

          題目

          隨機輸入一個字符串,把最左邊的10個不重復的英文字母(不區(qū)分大小寫)挑選出來。如沒有10個英文字母,顯示信息“not found”

          輸入格式:

          ?

          在一行中輸入字符串

          輸出格式:

          ?

          在一行中輸出最左邊的10個不重復的英文字母或顯示信息“not found"

          輸入樣例1: 在這里給出一組輸入。例如:

          ?

          poemp134567

          輸出樣例1: 在這里給出相應的輸出。例如:

          ?

          not found

          輸入樣例2 在這里給出一組輸入。例如:

          ?

          This 156is a test example

          輸出樣例2: 在這里給出相應的輸出。例如:

          ?

          Thisaexmpl

          解答

          提交代碼 - 1

          string =''.join(input().split())
          cont=set()
          index=list()
          for i in range(0,len(string)):
              old = len(cont)
              if str.isalpha(string[i]):
                  cont.add(string[i].lower())
              new = len(cont)
              if(old !=new):
                  index.append(i)
                  if len(cont) == 10:
                      print(*list(map(lambda a: string[a],index)),sep="")
                      exit()
          print("not found")

          提交代碼 - 2

          s=input()
          ans=[]
          for i in s:
              if i.isalpha() and i.upper() not in ans and i.lower() not in ans:
                  ans.append(i)
          if len(ans)<10:
              print("not found")
          else:
              for i in range(10):
                  print(ans[i],end="")

          3-19 找最長的字符串 (15 分)

          題目

          本題要求編寫程序,針對輸入的N個字符串,輸出其中最長的字符串。

          輸入格式:

          ?

          輸入第一行給出正整數(shù)N;隨后N行,每行給出一個長度小于80的非空字符串,其中不會出現(xiàn)換行符,空格,制表符。

          輸出格式:在一行中用以下格式輸出最長的字符串:

          ?

          The longest is: 最長的字符串

          如果字符串的長度相同,則輸出先輸入的字符串。

          輸入樣例:

          ?

          5 li wang zhang jin xiang

          輸出樣例:

          ?

          The longest is: zhang

          解答

          counts = int(input())-1
          ans = 0
          str = ""
          while counts>=0:
              s = input()
              if len(s)>ans:
                  ans=len(s)
                  str=s
              counts-=1
          print("The longest is: {}".format(str))

          3-20 逆序的三位數(shù) (10 分)

          題目

          程序每次讀入一個正3位數(shù),然后輸出按位逆序的數(shù)字。注意:當輸入的數(shù)字含有結(jié)尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。

          輸入格式:

          ?

          每個測試是一個3位的正整數(shù)。

          輸出格式:

          ?

          輸出按位逆序的數(shù)。

          輸入樣例:

          ?

          123

          輸出樣例:

          ?

          321

          解答

          提交代碼 - 1

          num = int(input())
          sum = 0
          while num:
              m=num%10
              sum=sum*10+m
              num=int(num/10)
          print(sum)

          提交代碼 - 2

          str = input()
          str = str[::-1]
          print(int(str))

          3-21 判斷回文字符串 (15 分)

          題目

          輸入一個字符串,判斷該字符串是否為回文?;匚木褪亲址行膶ΨQ,從左向右讀和從右向左讀的內(nèi)容是一樣的。

          輸入格式:

          ?

          輸入在一行中給出一個不超過80個字符長度的、以回車結(jié)束的非空字符串。

          輸出格式:

          ?

          輸出在第1行中輸出字符串。如果它是回文字符串,在第2行中輸出Yes,否則輸出No。

          輸入樣例1:

          ?

          level

          輸出樣例1:

          ?

          level Yes

          輸入樣例2:

          ?

          1 + 2 = 2 + 1 =

          輸出樣例2:

          ?

          1 + 2 = 2 + 1 = No

          解答

          str1 = input()
          str2 = str1[::-1]
          if str1 == str2:
              print(str1)
              print("Yes")
          else:
              print(str1)
              print("No")

          3-22 輸出大寫英文字母 (15 分)

          題目

          本題要求編寫程序,順序輸出給定字符串中所出現(xiàn)過的大寫英文字母,每個字母只輸出一遍;若無大寫英文字母則輸出“Not Found”。

          輸入格式:

          ?

          輸入為一個以回車結(jié)束的字符串(少于80個字符)。

          輸出格式:

          ?

          按照輸入的順序在一行中輸出所出現(xiàn)過的大寫英文字母,每個字母只輸出一遍。若無大寫英文字母則輸出“Not Found”。

          輸入樣例1:

          ?

          FONTNAME and FILENAME

          輸出樣例1:

          ?

          FONTAMEIL

          輸入樣例2:

          ?

          fontname and filrname

          輸出樣例2:

          ?

          Not Found

          解答

          str = input()
          ans = ""
          for i in str:
              if i.isupper() and ans.find(i) == -1:
                  ans+=i
          if len(ans)==0:
              print("Not Found")
          else:
              print(ans)

          結(jié)語

          希望對您有所幫助,如有錯誤歡迎小伙伴指正~

          我是 海轟?(?ˊ?ˋ)?

          如果您覺得寫得可以的話,請點個贊吧

          謝謝支持??

          瀏覽 488
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91在线无码精品秘 入口男同 | 婷婷在线污视频 | 在线a免费观看 | 久久久久久亚洲精品 | 97精品人妻一区二区 |