第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何檢查變量是否為數(shù)字(沒(méi)有數(shù)字)并在 Python 中不存在時(shí)引發(fā)錯(cuò)誤?

如何檢查變量是否為數(shù)字(沒(méi)有數(shù)字)并在 Python 中不存在時(shí)引發(fā)錯(cuò)誤?

慕田峪4524236 2023-01-04 14:26:02
我不明白為什么當(dāng)半徑或高度是浮點(diǎn)數(shù)時(shí)以下內(nèi)容無(wú)法正確運(yùn)行并引發(fā)錯(cuò)誤。def cone(radius, height):    if isinstance(radius, int) or isinstance(radius,float) == False:        raise TypeError("Error: parameters radius and height must be numeric.")    if isinstance(height, int) or isinstance (height,float)== False:        raise TypeError("Error: parameters radius and height must be numeric.")    if radius > 0 and height > 0:            return ((radius*radius)*(3.1415)*(height/3))    if radius<=0:        raise ValueError("Error: radius must be positive.")    if height <=0:        raise ValueError("Error: height must be positive.")
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

好像你想要

if not (isinstance(radius, int) or isinstance(radius,float)):

或者實(shí)際上

if not isinstance(radius, (float, int)):

目前你的邏輯是這樣的

if isinstance(radius, int) or (isinstance(radius,float) == False):

所以,如果你有一個(gè) int,那么你就會(huì)得到錯(cuò)誤。如果你得到一個(gè)浮動(dòng),你就不會(huì)出錯(cuò),因?yàn)槟阕罱K得到False or (True == False)

任何事物or False都等同bool(Anything)于 ,在本例中,True == False,即False

此外,我建議首先提出所有錯(cuò)誤并檢查條件。

然后只返回實(shí)際的數(shù)學(xué),因?yàn)槟菚r(shí)變量不可能是正的


查看完整回答
反對(duì) 回復(fù) 2023-01-04
?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

您可以將多種類型傳遞給isinstance,這樣您就可以擺脫or:


def cone(radius, height):

    if not isinstance(radius, (float, int)):

        raise TypeError("Error: parameters radius and height must be numeric.")

    if not isinstance(height, (float, int)):

        raise TypeError("Error: parameters radius and height must be numeric.")


    if radius > 0 and height > 0:

            return ((radius*radius)*(3.1415)*(height/3))

    if radius<=0:

        raise ValueError("Error: radius must be positive.")

    if height <=0:

        raise ValueError("Error: height must be positive.")


for value in [(1, 2), (0.33, 'foo')]:

    print(cone(*value))

輸出:


0.0

Traceback (most recent call last):

  File "/private/tmp/s.py", line 15, in <module>

    print(cone(*value))

  File "/private/tmp/s.py", line 5, in cone

    raise TypeError("Error: parameters radius and height must be numeric.")

TypeError: Error: parameters radius and height must be numeric.


查看完整回答
反對(duì) 回復(fù) 2023-01-04
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

您的問(wèn)題是if被評(píng)估為:


if (isinstance(radius, int)) or (isinstance(radius,float) == False)

我想這不是你的意思。


無(wú)論如何,您實(shí)際上可以通過(guò)使用try/except. 您可以假設(shè)您的參數(shù)是數(shù)字并與 進(jìn)行比較0。如果不是,將引發(fā)異常以便您可以捕獲它:


def cone(radius, height):

    try:

        if radius > 0 and height > 0:

            return ((radius*radius)*(3.1415)*(height/3))

        else:

            raise ValueError("Error: radius and height must be positive.")


    except TypeError:

        raise TypeError("Error: parameters radius and height must be numeric.")


查看完整回答
反對(duì) 回復(fù) 2023-01-04
  • 3 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)