嘍,大家好,我是雷工。
今天學習JavaScript基礎知識的分支語句,以下為學習筆記。
○寫幾句就從上往下執(zhí)行幾句,這種叫做順序結構;
○有時要根據(jù)條件選擇執(zhí)行代碼,這種叫分支結構;
○某段代碼被重復執(zhí)行,就叫循環(huán)結構;
○分支語句可以讓我們有選擇性的執(zhí)行想要執(zhí)行的代碼
○分支語句包含:
→ if分支語句
→ 三元運算符
→ switch語句
2.1、if分支語句
● if語句有三種使用:單分支、雙分支、多分支
● 單條件分支語句:程序如果執(zhí)行的時候,如果條件成立就執(zhí)行某一行代碼,如果條件不成立則執(zhí)行其他代碼
使用語法:
if(條件)
{
滿足條件要執(zhí)行的代碼
}
? 小括號內(nèi)的條件為true時,進入大括號里執(zhí)行代碼。
? 小括號內(nèi)的結果若不是布爾類型時,會發(fā)生隱式轉換轉換為布爾類型。
? 如果大括號內(nèi)只有一個語句,大括號可以省略,但是,一般不提倡這么做~
● 雙分支if語法:
if(條件)
{
滿足條件要執(zhí)行的代碼
}
else
{
不滿足條件時要執(zhí)行的代碼
}
語法解釋:
1>程序先判斷if中的條件是否成立(true),如果條件成立,則執(zhí)行if后面對應的代碼,else中的代碼不會執(zhí)行。
2>如果if中的條件不成立(False),程序只執(zhí)行else后{}中的代碼,if后{}內(nèi)的代碼不會執(zhí)行。
● 多條件分支語句if:
應用場景:當有多個結果的時候,比如學習成績可以分為:優(yōu)秀、良好、及格、不及格四個選項。
語法:
if(條件1)
{
滿足條件1要執(zhí)行的代碼1
}
else if(條件2)
{
滿足條件2要執(zhí)行的代碼2
}
else if(條件3)
{
滿足條件3要執(zhí)行的代碼3
}
else
{
以上條件均不滿足時執(zhí)行代碼n
}
語法說明:
? 先判斷條件1,若滿足條件1就執(zhí)行代碼1,其他代碼統(tǒng)統(tǒng)不執(zhí)行;
? 若不滿足則按順序向下判斷條件2,滿足條件2執(zhí)行代碼2,其他代碼不執(zhí)行;
? 若依然不滿足繼續(xù)往下判斷,依次類推 ;
? 若以上條件都不滿足,執(zhí)行else里的代碼n ;
? 注:可以根據(jù)實際需要寫N個條件,但這里演示只寫2個;
單條件分支語句和多條件分支語句總結:
a)不管是單條件分支語句,還是多條件分支語句,else都可以省略(前提else中沒有代碼)
b)條件分支語句,如果只有一行代碼,則{}可以省略。
例:if(3>0)alert("雷工筆記");
c)分支語句可以相互嵌套。
2.2、三元表達式
就是單條件分支語句的另外一種寫法
語法:
條件 ? 代碼1 : 代碼2;
語法說明:
a)判斷條件的真假,如果為真,則執(zhí)行代碼1,后面的代碼2不執(zhí)行;
b)如果條件不成立,則執(zhí)行代碼2,前面的代碼1不執(zhí)行;
● 一般用來取值
2.3、switch分支語句
switch 分支語句就是多條件分支語句的另外一種寫法
語法:
switch(數(shù)據(jù)/變量)
{
case 值1:
代碼1;
break;
case 值2:
代碼2;
break;
case 值3:
代碼3;
break;
default:
代碼n;
break;
}
釋義:
? 找到跟小括號里數(shù)據(jù)/變量全等的case值,并執(zhí)行里面對應的代碼
? 若沒有全等 === 的則執(zhí)行 default里面的代碼
? 例:數(shù)據(jù)若跟值1全等,則執(zhí)行代碼1
注意事項:
1>. switch case語句一般用于等值判斷,不適合于區(qū)間判斷;
2>. switch case一般需要配合break關鍵字使用 沒有break會造成case穿透(default后面的break可以省略);
3>.什么情況下使用switch語法?什么情況下使用多條件分支if語句?
a)在任何情況下都可以使用switch語句或者多條件分支語句;
b)如果變量的值是某些固定的值,推薦使用switch;
示例1:一年有12個月,1月-12月;
示例2:一年有4個季節(jié),春,夏,秋,冬
c)如果變量的值是一個范圍,推薦使用if多分支語句
示例:
者:Roman Orac
魚羊 編譯整理
量子位 報道 | 公眾號 QbitAI
數(shù)據(jù)分析,如何能錯過 Pandas 。
現(xiàn)在,數(shù)據(jù)科學家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。
了解了這些技巧,能讓你在學習、使用 Pandas 的時候更加高效。
話不多說,一起學習一下~
用 Pandas 做數(shù)據(jù)分析,最大的亮點當屬 DataFrame。不過,在展示成果的時候,常常需要把 DataFrame 轉成另一種格式。
Pandas 在這一點上其實十分友好,只需添加一行代碼。
DataFrame 轉 HTML
如果你需要用 HTML 發(fā)送自動報告,那么 to_html 函數(shù)了解一下。
比如,我們先設定這樣一個 DataFrame:
import numpy as np
import pandas as pd
import random
n = 10
df = pd.DataFrame(
{
"col1": np.random.random_sample(n),
"col2": np.random.random_sample(n),
"col3": [[random.randint(0, 10) for _ in range(random.randint(3, 5))] for _ in range(n)],
}
)
用上 to_html,就可以將表格轉入 html 文件:
df_html = df.to_html()
with open(‘a(chǎn)nalysis.html’, ‘w’) as f: f.write(df_html)
與之配套的,是 read_html 函數(shù),可以將 HTML 轉回 DataFrame。
DataFrame 轉 LaTeX
如果你還沒用過 LaTeX 寫論文,強烈建議嘗試一下。
要把 DataFrame 值轉成 LaTeX 表格,也是一個函數(shù)就搞定了:
df.to_latex()
DataFrame 轉 Markdown
如果你想把代碼放到 GitHub 上,需要寫個 README。
這時候,你可能需要把 DataFrame 轉成 Markdown 格式。
Pandas 同樣為你考慮到了這一點:
print(df.to_markdown())
注:這里還需要 tabulate 庫
DataFrame 轉 Excel
說到這里,給同學們提一個小問題:導師/老板/客戶要你提供 Excel 格式的數(shù)據(jù),你該怎么做?
當然是——
df.to_excel(‘a(chǎn)nalysis.xlsx’)
需要注意的是,如果你沒有安裝過 xlwt 和 openpyxl 這兩個工具包,需要先安裝一下。
另外,跟 HTML 一樣,這里也有一個配套函數(shù):read_excel,用來將excel數(shù)據(jù)導入pandas DataFrame。
DataFrame 轉字符串
轉成字符串,當然也沒問題:
df.to_string()
此前,Roman Orac 還曾分享過 5 個他覺得十分好用,但大家可能沒有那么熟悉的 Pandas 技巧。
1、data_range
從外部 API 或數(shù)據(jù)庫獲取數(shù)據(jù)時,需要多次指定時間范圍。
Pandas 的 data_range 覆蓋了這一需求。
import pandas as pd
date_from = “2019-01-01”
date_to = “2019-01-12”
date_range = pd.date_range(date_from, date_to, freq=”D”)
print(date_range)
freq = “D”/“M”/“Y”,該函數(shù)就會分別返回按天、月、年遞增的日期。
2、合并數(shù)據(jù)
當你有一個名為left的DataFrame:
和名為right的DataFrame:
想通過關鍵字“key”把它們整合到一起:
實現(xiàn)的代碼是:
df_merge = left.merge(right, on = ‘key’, how = ‘left’, indicator = True)
3、最近合并(Nearest merge)
在處理股票或者加密貨幣這樣的財務數(shù)據(jù)時,價格會隨著實際交易變化。
針對這樣的數(shù)據(jù),Pandas提供了一個好用的功能,merge_asof。
該功能可以通過最近的key(比如時間戳)合并DataFrame。
舉個例子,你有一個存儲報價信息的DataFrame。
還有一個存儲交易信息的DataFrame。
現(xiàn)在,你需要把兩個DataFrame中對應的信息合并起來。
最新報價和交易之間可能有10毫秒的延遲,或者沒有報價,在進行合并時,就可以用上 merge_asof。
pd.merge_asof(trades, quotes, on=”timestamp”, by=’ticker’, tolerance=pd.Timedelta(‘10ms’), direction=‘backward’)
4、創(chuàng)建Excel報告
在Pandas中,可以直接用DataFrame創(chuàng)建Excel報告。
import numpy as np
import pandas as pd
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=["a", "b", "c"])
report_name = 'example_report.xlsx'
sheet_name = 'Sheet1'
writer = pd.ExcelWriter(report_name, engine='xlsxwriter')
df.to_excel(writer, sheet_name=sheet_name, index=False)
不只是數(shù)據(jù),還可以添加圖表。
# define the workbook
workbook = writer.book
worksheet = writer.sheets[sheet_name]
# create a chart line object
chart = workbook.add_chart({'type': 'line'})
# configure the series of the chart from the spreadsheet
# using a list of values instead of category/value formulas:
# [sheetname, first_row, first_col, last_row, last_col]
chart.add_series({
'categories': [sheet_name, 1, 0, 3, 0],
'values': [sheet_name, 1, 1, 3, 1],
})
# configure the chart axes
chart.set_x_axis({'name': 'Index', 'position_axis': 'on_tick'})
chart.set_y_axis({'name': 'Value', 'major_gridlines': {'visible': False}})
# place the chart on the worksheet
worksheet.insert_chart('E2', chart)
# output the excel file
writer.save()
注:這里需要 XlsxWriter 庫
5、節(jié)省磁盤空間
Pandas在保存數(shù)據(jù)集時,可以對其進行壓縮,其后以壓縮格式進行讀取。
先搞一個 300MB 的 DataFrame,把它存成 csv。
df = pd.DataFrame(pd.np.random.randn(50000,300))
df.to_csv(‘random_data.csv’, index=False)
壓縮一下試試:
df.to_csv(‘random_data.gz’, compression=’gzip’, index=False)
文件就變成了136MB。
gzip壓縮文件可以直接讀取:
df = pd.read_csv(‘random_data.gz’)
這一份Pandas技巧筆記,暫且說到這里。各位同學都做好筆記了嗎?
Talk is cheap, show me the code。學會了,就用起來吧
— 完 —
量子位 QbitAI · 頭條號簽約
關注我們,第一時間獲知前沿科技動態(tài)
器之心報道
機器之心編輯部
只要你有純文本編輯器,加上一條語句,瞬間它就可以成為 Markdown 編輯器。
Markdeep 是一個用來寫純文本的插件,它能以 Markdown 的語法與渲染方式純文本,并在網(wǎng)頁上展示。同時,除了 Markdown 語法,Markdeep 還額外支持圖表、數(shù)學方程等擴展能力。
項目主頁:https://casual-effects.com/markdeep/
我們先看看效果,如下左邊是純文本編輯器的編輯頁面,右邊是在瀏覽器上的渲染效果:
Markdeep 非常容易使用,它也不需要安裝插件或聯(lián)網(wǎng)。如上所示只要在純文本最后加上「<!—Markdeep→」那一行的表達式,它就可以變成一個地道的 Markdown 編輯器。Markdeep 不需要額外安裝任何東西,也不需要導出、編譯等雜七雜八的過程。
看著 Markdeep 很簡單,但它的功能卻不少,一點也不遜色于 Typora 等正統(tǒng)的 Markdown 編輯器。不論我們是寫項目的 README 文檔、實驗報告,還是要做 PPT 或寫論文,它都能滿足。該項目提供了很多示例,例如生成的 PPT 是什么樣的,后文會具體展示。
開源代碼
Markdeep 是開源的,所以可以直接下載和修改源代碼文件 markdeep.js。整個編輯器就是一個 JavaScript 腳本,上面定義了各種格式與渲染方式。作者表示,目前他正研究該如何有效降低腳本文件大小。
用于表格處理的部分代碼,整個腳本有超過 5000 行代碼。
腳本源碼地址:https://casual-effects.com/markdeep/latest/markdeep.js
作者表示,這個項目本來就是一個業(yè)余項目,它并不會有完整的技術支持。不過只要提交的 Bug 足夠具體,作者都會完善它。此外,該項目還會經(jīng)常加入一些新特性,從 2015 年 10 月份的第一版,到今年 2 月份的最新版,這個編輯器已經(jīng)維護了很長時間。
Markdeep 怎么用
如果你需要創(chuàng)建一個 Markdeep 的文件,只需要打開任意一個文本編輯器,然后開始編輯。完成文本編輯工作后,只需要在其底部寫下一個簡單的代碼就行了。然后,將這個文檔保存為純文本文件,使用 .md.html 為擴展名。
<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js" charset="utf-8"></script><script src="https://casual-effects.com/markdeep/latest/markdeep.min.js" charset="utf-8"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>
如果你希望在源文檔中使用 Unicode,則需要在文檔頂部先加上這句話:
<meta charset="utf-8">
想要看看效果?你可以將文本拖入瀏覽器或雙擊它。即使網(wǎng)絡離線也可以查閱文檔。如果不想因為離線而失去格式,可以將 markdeep.min.js 文件和文檔保存在一個文件夾中。
如果想要看看 Markdeep 原始文本,在文件 URL 最后加上「?noformat」即可。
上手示例
小編隨手測試了幾個典型 Markdown 語法,比如:代辦列表、自動鏈接、表格、內(nèi)聯(lián)圖片、代碼。與此同時,LaTeX 的數(shù)學表達式和圖形也能直接設計,而不需要任何插件。具體效果可參考:
簡而言之,配備完善,對于熟悉 Markdown 的小伙伴來說,用起來會十分順手及方便。這意味著,在有網(wǎng)的情況下,隨意拎一個文本編輯器后,就再也沒有人能攔得了你使用 Markdown 了。與此同時,時時預覽效果也非常簡便,只需要在文本編輯器里修改,瀏覽器中刷新下便可呈現(xiàn)最新效果。
Markdeep 能干什么
只要是 Markdown 支持的,Markdeep 就能夠支持,它在業(yè)界和學術界能得到廣泛使用。如下所示,各種題材與格式的文檔都能用 Markdeep 完成:
看起來 Markdeep 似乎什么都能做,項目作者同樣也展示了這些方面的效果圖:
Markdeep 制作的 PPT。
Markdeep 制作的個人簡歷。
總之,除了使用方便、展示炫酷,Markdeep 的功能也是非常強大。正如其它開發(fā)者所強調(diào)的,Markdeep 是能制作簡單圖表的 Markdown 工具,它以一種「ASCII Art」的方式用純文本制作出圖形,并且不用渲染也非常明晰。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。