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

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么return后面不能直接寫r*r呢?

為什么return后面不能直接寫r*r呢?后面還非要加==x?

為什么用下面的if語句寫不對?

def is_sqr(x)

if int(math.sqrt(x))==1:

? ? return x

正在回答

5 回答

import math

def is_sqr(x):

? ? if int(math.sqrt(x))==1:

? ? ? ? return x

print filter(is_sqr, range(1, 101))

當x=4時,sqrt(x)=2 不等于1,判斷結束

結果是

[1, 2, 3]


0 回復 有任何疑惑可以回復我~

import math

def is_sqr(x):

??? for i in range(1,11):
??????? if i*i==x:
??????????? return x
??????? else:
??????????? i=i+1
print filter(is_sqr, range(1, 101))

這樣子寫的話,個人感覺很好理解?


0 回復 有任何疑惑可以回復我~
#1

慕粉0330126670_kaese

else那句根本不需要 前面有for循環
2019-06-10 回復 有任何疑惑可以回復我~
#2

慕粉0330126670_kaese 回復 慕粉0330126670_kaese

而且你是知道100以內的平方根的范圍,如果給一個很大的數字,你就不能定義range的范圍了
2019-06-10 回復 有任何疑惑可以回復我~

int(math.sqrt(x))==1: ? 表示平方根整數部分為1的數有哪些,在1-100中間,1,2,3,的平方根分別是1,1.414, ?1.236,整數部分是1.

0 回復 有任何疑惑可以回復我~

加==x表示一個判斷,返回類型為布爾型。值為True或者False。而filter()函數?f?的作用是對每個元素進行判斷,返回 True或 False。

如果直接返回r*r,那就是r*r,如果r=0則為False否則值為True。此題輸出結果就變成range(1,101)的結果了

3 回復 有任何疑惑可以回復我~
#1

唯衛bww 提問者

謝謝 明白啦!
2019-05-23 回復 有任何疑惑可以回復我~

import math


def is_sqr(x):

? ? r = int(math.sqrt(x))

? ? return x == r *r


print filter(is_sqr, range(1, 101))


x == r * r 也是可以的,返回 x?

然后你的那代碼def is_sqr(x) 少了冒號? '? : '? 還有很多問題,我也是萌新,很多不懂的,查了一下,改了一會,即使運行起來也不是正確的答案(我算數差,)?

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

為什么return后面不能直接寫r*r呢?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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