python中的冪函式、指數函式問題
最近在調程式碼,碰到冪函式、指數函式,總是提示
ValueError: math domain error
ValueError: negative number cannot be raised to a fractional power
這些異常、錯誤,
發現裡邊有很多細節問題:
python中,想要表示a的b次方時,有兩種方法:
1,math.pow()這個內建函式
2,**運算子
這兩種方法效果是一樣的,但是當
b為分數,a為負數:當冪運算子的底數為負數、冪為分數時,Python會丟擲ValueError: negative number cannot be raised to a fractional power
這時有兩種方法可以解決此問題:
1,底數a正負均可不影響你的演算法的話,加一個絕對值就行了即abs(a);
2,如果底數a必須是正、或必須是負的話,需要採用複數進行運算。因此凡是遇到冪為分數的項,都將底數用complex()
轉換為複數。
參考:http://hyry.dip.jp/tech/slice/slice.html/41
相關推薦
python中的冪函式、指數函式問題
最近在調程式碼,碰到冪函式、指數函式,總是提示 ValueError: math domain error ValueError: negative number cannot be raised to a fractional power 這些異常、錯誤, 發現裡邊有很多
Python中lambda表示式、reduce函式、map函式、zip函式
對Python這幾個常用的小函式做一個彙總學習,參考了一些資料,有不妥的地方請原諒。 1、lambda函式 lambda是Python的一個內建函式,但是比def簡單很多。lambda不同於其他函式,主體是一個表示式,在程式碼內部嵌入一個函式的定義。工程用的比較多的是程式
python中str函式isdigit、isdecimal、isnumeric的區別
《Python字串》中講了三種方法的大致用法,尚未細緻區分細節差別。 找點資料暫存,估計以後能用上。 num = "1" #unicode num.isdigit() # True num.isdecimal() # True num.isnumeric() # T
python中的map、filter、reduce函式
三個函式比較類似,都是應用於序列的內建函式。常見的序列包括list、tuple、str。 1.map函式 map函式會根據提供的函式對指定序列做對映。 map函式的定義: map(function, sequence[, sequence, ...]) -> list 通過定義可以看到,這個函式的第
python中字串:宣告、編碼、函式、格式化
字串的宣告有三種方式:單引號、雙引號和三引號(包括三個單引號或三個雙引號)。例如: ? 1 2 3 4 5 6 7 8 9 10 11 12 >>> str1= 'hello world' >>> str2= "hello
[Python] Python中的模組、包和內建函式
1.模組 python 模組簡單來說就是一個.py檔案,程式的目的是執行,而模組的目的是供其他程式匯入並且使用。 模組也有物件,每個模組物件都有一個特殊屬性:__dict__,這是一個包含模組符號表的字典。 匯入模組 import importabl
Python中的列表、元祖、字典
value pop val 什麽 刪除 append 更新 位置 增刪改 一、列表 一組有序項目的集合。可變的數據類型【可進行增刪改查】 列表是以方括號“[]”包圍的數據集合,不同成員以“,”分隔。 列表中能夠包括不論什麽數據類型,也可包括還有一個列表 列表可通過序號訪
Python中的lambda、map、filter、reduce、zip
sum http seq 是你 解包 range 匿名函數 三元 param lambda lambda是匿名函數,也就是沒有名字的函數。lambda的語法非常簡單: 下面是一個lambda表達式的簡單例子: 註意:我們可以把lambda表達式賦值給一個變量,然後通過這個
Python中列表(list)、字典(dict)排序的程序
self. 能夠 網站 軟件 too 字段 tool 生成 ted Python3 中的排序,在 Sorting HOW TO 中已經講得很清楚了。來個實際的例子,對下面的這個 list 依據創建時間排序: pages = [{‘title‘: ‘十年學會程序設計‘, ‘
Python中的可變、不可變對象和賦值技巧序列解包
lis 我們 最大 pac 唯一標識 src 技術分享 efault pre 可變對象和不可變對象 在python中一切皆對象。在Python中不存在所謂的值傳遞調用,一切傳遞都是對象的引用,也可認為是傳址。 python中,對象分為可變(mutable)和不可變(imm
python中的hasattr()、getattr()、setattr()
lun not mman bject 參數 continue 我想 each trac hasattr()的用法和理解--hasattr(obj, target) 判斷對象obj中是否含有,目標target屬性,然後返回布爾值,如果有返回True,沒有返回False。 &g
python中的join、set集合、深淺拷貝
數據類型 增刪改查操作 凍結 方法 set 不可 拷貝 增刪 增刪改查 一. join 1. str中的join方法. 把列表轉換成字符串 2. 列表和字典在循環的時候不能直接刪除. 需要把要刪除的內容記錄在
Python中關於list、tuple、字符串的比較
用法 連接 paragraph ble 大寫 空間占用 rabl 長度 命名 List定義及常用的方法見上一篇博客。 Tuple元組tuple的定義: tuple是一個有序的元素組成的不可變對象的集合,使用小括號()表示,是可叠代對象 元組中數據的訪問
python中sys.stdout、sys.stdin
clas 輸入 包括 ima nbsp 返回 是把 調用 hello 1.如果需要更好的控制輸出,而print不能滿足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的。 2.sys.stdout與print: 在python中調用prin
python中靜態方法、類方法、屬性方法區別
ref self 使用 lan com 通過 場景 UNC cme 在python中,靜態方法、類方法、屬性方法,剛接觸對於它們之間的區別確實讓人疑惑。 類方法(@classmethod) 是一個函數修飾符,表是該函數是一個類方法 類方法第一個參數是cls,而實例方法第
Python中復制、深拷貝和淺拷貝的區別
ron 一份 謝謝 操作 完成 函數 技術 也會 python解釋器 深拷貝定義(deepcopy) 在Python中,由於一切皆對象,所以任何變量都可以被引用,也即可以被賦值給任何變量。但是在Python中,給變量賦值,是區分的,一般情況下,Python中的變量賦值都是淺
python中偏函式的應用
一、什麼是偏函式? (1)在Python的functools模組眾多的功能中,其中有一個就是偏函式,我們稱之為 partial function 模組的概念我們下一篇在細講。 (2)我們都聽過偏將軍吧,在三國時代的官制中,系將軍的輔佐,與裨將軍兩者都
python中eval函式作用
eval函式就是實現list、dict、tuple與str之間的轉化str函式把list,dict,tuple轉為為字串一、字串轉換成列表 a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" print(type(a)) b = eval(a)print(type(
python中 mean()函式功能:求取均值
用法:mean(matrix,axis=0) 其中 matrix為一個矩陣,axis為引數 以m * n矩陣舉例: axis 不設定值,對 m*n 個數求均值,返回一個實數 axis = 0:壓縮行,對各列求均值,返回 1* n 矩陣 axis =1 :壓縮列,對各行求均
Python中split()函式用法和例項
一、描述 split()通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串 函式形式:str.split(str="", num=string.count(str)) 引數: str -- 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表