Python習題(第3課)


一、獨一無二的路

  從前有一只小小的機器人叫小器,小器站在一個M*N的格子地板的最左上角,很孤單,世界辣么大,它也想去看看,經過不懈的努力它終於可以(只能)向下或者向右移動啦,它有一個宏偉的願望就是要穿過格子地板到達右下角的磚,所以如果小器告訴你M和N,你能不能幫它計算一下這中間可以有多少條獨一無二的路徑?

  

  代碼如下:(遞歸,個人喜歡,但可能會超出時間)

 1 def way(m,n,i,j):
 2   if i==m or j==n:
 3     return 0
 4   elif i==m-1 and j==n-1:
 5     return 1
 6   elif i==m-1 and j!=n-1:
 7     return way(m,n,i,j+1)
 8   elif i!=m-1 and j==n-1:
 9     return way(m,n,i+1,j)
10   else:
11     return way(m,n,i+1,j)+way(m,n,i,j+1)
12 
13 m=int(input())
14 n=int(input())
15 print(way(m,n,0,0))

 

二、括號配對檢測 A

  用戶輸入一行字符串,其中可能包括小括號 (),請檢查小括號是否配對正確,配對成功與否分別輸出:

  配對成功,配對不成功

  其中,小括號配對要考慮配對順序,即()表示配對,)(不是配對,只考慮小括號配對。

  

  代碼如下:

def parentheses(temp):
  list1=[]
  for i in range(len(temp)):    #除去其他,剩下(),放在list1
    if temp[i]=='(' or temp[i]==')':
      list1.append(temp[i])
  list2=[]    #存放(,相當於棧
  if len(list1)==0:    #排除明顯正確
    return True
  elif list1[0]==')':    #排除明顯錯誤
    return False
  elif len(list1)%2!=0:
    return False
  else:
    for i in range(len(list1)):
      if list1[i]=='(':
        list2.append(list1[i])
      elif list1[i]==')' and len(list2)!=0:
        list2.pop()
      else:
        return False
  return True

temp=input()
if parentheses(temp):
  print('配對成功')
else:
  print('配對不成功')

三、垂直Hello World

  垂直輸出"Hello World",全部代碼不超過2行。

 

  代碼如下:

print(*'Hello World',sep='\n')

四、斐波那契數列計算

  斐波那契數列如下:F(0) = 0, F(1) = 1

           F(n) = F(n-1) + F(n-2)

  編寫一個計算斐波那契數列的函數,采用遞歸方式,輸出不超過n的所有斐波那契數列元素。

  調用上述函數,完成如下功能:

  用戶輸入一個整數n,輸出所有不超過n的斐波那契數列元素、輸出數列的元素和及平均數,輸出按照順序,用英文逗號和空格分割。

  

  代碼如下:

def Fibon(num):
  if num==0:
    return 0
  elif num==1:
    return 1
  elif num>1:
    return Fibon(num-1)+Fibon(num-2)

num=int(input())
list1=[]
for i in range(num+1):
  list1.append(Fibon(i))
  print(list1[-1],end=', ')
print(sum(list1),sum(list1)//len(list1),sep=', ')

五、3位水仙花數計算

  “3位水仙花數”是指一個三位整數,其各位數字的3次方和等於該數本身。例如:ABC是一個“3位水仙花數”,則:A的3次方+B的3次方+C的3次方 = ABC。

  請按照從小到大的順序輸出所有的3位水仙花數,請用一個“逗號+空格”分隔輸出結果。

  注意:這是一個OJ題目,輸出格式要嚴格一致,最后一位水仙花數后沒有逗號。

  

  代碼如下:

def Narcissus():
  list1=[]
  for num in range(100,1000):
    a=num//100
    b=num//10%10
    c=num%10
    if num==a**3+b**3+c**3:
      list1.append(num)
  return list1

str1=', '.join(map(str,Narcissus()))
print(str1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM