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

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

Python 編碼,嵌套循環

Python 編碼,嵌套循環

catspeake 2021-08-14 17:46:14
假設有兩個變量 k 和 m,每個變量都已經與一個正整數值相關聯,并進一步假設 k 的值小于 m 的值。編寫計算 k 和 m 之間完美平方數所需的代碼。(完美平方是一個整數,如 9、16、25、36,它等于另一個整數的平方(在本例中分別為 3*3、4*4、5*5、6*6。)關聯數字你用變量 q 計算。例如,如果 k 和 m 的值分別為 10 和 40,則應將 3 分配給 q,因為在 10 和 40 之間有這些完全平方數:16、25 和 36。**如果我想計算 16 和 100 之間的數字(5,6,7,8,9 =makes 5)并根據 i 和 j 編寫代碼,我的代碼將如下所示,但出了點問題。我想得到結果,5 最后。我該如何糾正? k=16 m=100 i=0 j=0 q1=0 q2=0 while j**2 <m:    q2=q2+1    while i**2 <k:        q1=q1+1        i=i+1    j=j+1    print(q2-q1)
查看完整描述

3 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

您可能不想為此循環。如果 k 和 m 相距很遠,則需要很長時間。


給定 k < m,你想計算多少個整數 l 使得 k < l^2 < m。最小可能的整數是 floor( sqrt(k) +1 ),最大可能的整數是 ceil(sqrt(m)-1)。這些整數的數量是:


import math


def sq_between(k,m):

    return math.ceil(m**0.5-1) - math.floor(k**0.5+1) +1

這允許


sq_between(16,100)

產生:


5


查看完整回答
反對 回復 2021-08-14
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

這是您的功能的另一個版本,似乎可以滿足您的要求。


k = 16

m = 100

perfect_squares = []

for i in range(m):

    if i**2 < k:

        continue

    if i**2 > m:

        break

    perfect_squares.append(i**2)

print(perfect_squares)


查看完整回答
反對 回復 2021-08-14
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

您的代碼混淆了第二個 while 循環中的所有內容。如果您進一步解釋一下您在那里嘗試做什么,我可能能夠解釋為什么您的想法不起作用。


我會按如下方式更改您的代碼以使其正常工作:


k = 10

m = 40


i = 0

q = 0

while i ** 2 < m:

    if i ** 2 > k:

        print(i)

        q += 1

    i += 1


print (q)

通過利用每個平方數都可以通過square = sum from i = 1 to n (2 * i + 1)有一個簡單的方法來加速上述算法的事實- 但算法會變得更長……


查看完整回答
反對 回復 2021-08-14
  • 3 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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