亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python-是數字 pronic,如果沒有找到最近的 pronic 數字

Python-是數字 pronic,如果沒有找到最近的 pronic 數字

慕娘9325324 2022-06-22 17:26:57
任務是讓一些輸入數字找出那個數字 pronic,如果沒有找到最接近輸入數字的 pronic 數字。問題是如何編寫其余的代碼。我設法完成了第一部分,并找出輸入的數字是否是 pronic。問題是如果輸入的數字不是 pronic,我找不到找到最近的較大數字的好方法。我有一個想法添加到嵌套 for 循環的 else 部分中,以查找從 1 到 n 的所有 pronic 數字,將它們附加到列表中并找到該列表的最大值,但即使我這樣做,我也只會找到最接近的較小數字,而不是最接近的也可能大于給定的數字。目前,我有:flag=0n=int(input('Enter the number: '))for i in range(1,n):    if i*(i+1)==n:        flag=1if flag==1:    print('Entered number is pronic!')else:    def pro(n):        flag=False        for j in range(1,n):            if j*(j+1)==n:                flag=True                break        return flaglist1=[]for i in range(1,n):    if pro(i):        list1.append(i)print('Not pronic. Closest smaller pronic number: ',max(list1))
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

當試圖用代碼解決問題時,你最好重用其他人編寫的代碼來解決類似的問題。一開始發現“相似”的問題可能很困難,但通過練習很快就會變得更容易!


在這種情況下,我將利用“pronic numbers”被定義為“兩個連續整數的乘積”這一事實。使用你的變量名,我們可以把它變成優化問題:找到i最接近i*(i+1)的整數n。


我首先注意到它i*(i+1)看起來很像i*i,這是通過取平方根來反轉的。計算機可以很容易地求平方根,所以這sqrt(n)將是尋找平方根的一個很好的起點i


用幾個數字試試這個:


 n sqrt(n) nearest  i

 6   ~2.4     6     2

 7   ~2.6     6     2

 8   ~2.8     6     2

 9    3.0    12     3

11   ~3.3    12     3

12   ~3.5    12     3

我們可以看到,小數部分sqrt(n)也為我們提供了有關“最近”普羅尼克數的信息:<0.5 表示我們需要一個較小的數字,>0.5 表示我們需要一個較大的數字,這類似于“四舍五入”一個數字。我們還可以看到,i用來獲取最近數的只是整數部分sqrt


轉移到 Python 代碼,我們可以這樣做:


from math import sqrt


def nearest_pronic(n):

  i = int(sqrt(n))

  return i * (i+1)

您可以隨意使用它,例如:


n = float(input('give me a number'))

np = nearest_pronic(n)

if n == np:

  print(f"{n} is a pronic number")

else:

  print(f"the nearest pronic number to {n} is {np}")

這對我來說是正確的。


查看完整回答
反對 回復 2022-06-22
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號