① python語言問題,使用fibs()輸出斐波那契數列,代碼如下,不知道哪裡有問題
先上修改後的代碼:
deffibs(num):
result=[0,1]
foriinrange(2,num):
result.append(result[-2]+result[-1])
returnresult
print(fibs(9))
1、修改for循環的范圍,改為從2~num。
2、計算式應該是result[-2] + result[-1]。
3、return result應該是和for對齊的,不然執行一次for就返回了。
請看結果:
② java用正則表達式判定特殊字元是否,存在就替換的問題
至少有兩種正則表達式的方法:
1、直接調用String類的replaceAll(String regex, String replacement)方法
代碼:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
ss.replaceAll("[\\[\\]\\{\\}]", "");//返回結果,可列印或返回
優點:簡單
缺點:不具有通用性,需求變動則不適用,例如[{dd}]替換成DD
2、通過匹配規則來截取字元串
代碼:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
//正則表達式,表示由非[、]、{、}的任意字元構成
String tmp = "[^\\[^\\{^\\]^\\}.]";
//正則表達式,由5組構成第一組是普通字元串,第二組是"[{"字元串,第三組是普通字元串,第四組是"}]"字元串,第五組是普通字元串
Pattern pattern = Pattern.compile("(" + tmp + "*)(\\[\\{)(" + tmp + "*)(\\}\\])(" + tmp + "*)");
Matcher matcher = pattern.matcher(ss);
StringBuffer result = new StringBuffer();
while(matcher.find()) {
result.append(matcher.group(1) + matcher.group(3) + matcher.group(5));
}
//result就是最終結果。
優點:具有一定的通用性,可自己定製需要的字元串,新字元串可以由原字元串的部分組成,也可與其他字元拼裝,能更好滿足可重用性,例如需求變更成[{dd}]替換成DD,代碼只需將result.append(matcher.group(1)+matcher.group(3)+matcher.group(5));換成result.append(matcher.group(1)+matcher.group(3).toUpperCase()+matcher.group(5));就能完成
缺點:代碼較長
PS:StringBuffer可轉化成String再返回
③ python print result.append((x,y))為什麼輸出結果是None
因為 result.append(***)是沒有返回值的,
也就是說 append這個功能不!是!這!樣!:
defappend(***):
****
***
return***#append沒有return東西
所以 print出來的 就沒有東西.
如果你想 print出來,就需要改成:
result=[]
forxinrange(3):
foryinrange(3):
result.append((x,y))
print(result)