LaTex_Texmaker 學習之路

這是將原本由 Microsoft Word 完成的作業,改以 LaTex_Texmaker 完成的 PDF 檔 。

目前中文目錄的編號仍在努力中,LaTex_Texmaker 寫法放在圖片之後。







LaTex_Texmaker


\documentclass[a4paper,12pt]{article}

% 使用中文
\usepackage{xeCJK}
%\setCJKmainfont{SimSun} % 新宋体 SimSun、NSimSun
%\setCJKmainfont{標楷體}
\setCJKmainfont{細明體}
%\setCJKmainfont{新細明體}
%\setCJKmainfont{微軟正黑體}

% 日期格式
\usepackage[nodayofweek]{datetime}
\newdateformat{mydate}{\THEYEAR {} \twodigit{\THEMONTH} \twodigit{\THEDAY}}


% 設定邊界、段距及列距
\usepackage[margin=2cm]{geometry}
\usepackage{setspace}
%\doublespacing   % 2.0 倍列距
\onehalfspacing   % 1.5 倍列距
\setlength{\parskip}{6pt}

% 字體大小擴充功能
\usepackage{moresize}

% 使用圖片
\usepackage{graphicx}

% 清單擴充功能
\usepackage{enumerate}

% 參考文獻 需另建立一個 .bib 檔
\usepackage[notocbib]{apacite} % 目錄中不出現 reference 


%%%%%% 文章起始 %%%%%%
\begin{document}


%%% 封面
\begin{titlepage}
    \begin{center}
        \vspace*{0.5cm}
        \huge 數位家庭程式設計入門作業04
        
        \vspace{1cm}
        \HUGE \textbf{名稱:黑洞數}
        \vspace{1cm}

        \includegraphics[width=7cm]{2019_1.jpg}
        \vfill
        \huge 姓名:鍾士燊

        \begin{center}
%	        \today

%	        \shortdate
%	        \today

	        \mydate
	        \today {} \currenttime
        \end{center}
         
    \end{center}
\end{titlepage}


%%% 摘要
%\section*{摘要}  % * 表示目錄中不出現 摘要
\pagenumbering{roman} % 摘要 頁碼

%這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試,這是摘要測試。

%%% 目錄
\renewcommand\contentsname{目錄} % 目錄名稱改成 中文
\tableofcontents


%%% 本文

\newpage
\pagenumbering{arabic} % 頁碼改為 阿拉伯數字

\section*{一、程式說明}    % * 表示不加編號,但也不會出現在目錄中
\addcontentsline{toc}{section}{一、程式說明}  
% \addcontentsline 自行將標題加入目錄檔,供 LaTex 建立目錄。

\subsection*{(一)何謂黑洞數}
\addcontentsline{toc}{subsection}{(一)何謂黑洞數}

\hspace{2.1em}黑洞數是指於三位數或四位數中,只要數字不完全相同,將該數字由大到小排列減去由小到大排列,經有限操作後,總會得到某一固定的數字,這種現象類似黑洞,故稱為黑洞數\footnote{https://zh.wikipedia.org/zh-tw/黑洞數}。


\subsection*{(二)黑洞數遊戲規則}
\addcontentsline{toc}{subsection}{(二)黑洞數遊戲規則}

\hspace{3.6em}1. 輸入一不完全相同的三位數或四位數 N。 

\hspace{2.1em}2. 重新排列 N,取得此數之最大數$ N_{max} $ 與最小數$ N_{min} $

\hspace{2.1em}3. 令 $ M = N_{max} – N_{min} $

\hspace{2.1em}4. 當 N == M 時停止程式,否則令 N=M 並重複步驟 2、步驟 3 與步驟 4。


\subsection*{(三)程式附加功能}
\addcontentsline{toc}{subsection}{(三)程式附加功能}

\hspace{3.6em}1. 程式需有防止輸入非數字、全相同、非三位數及非四位數功能。 

\hspace{2.1em}2. 遊戲規則步驟3,相減後之數字位數不足時,於MSD補 "0"。

\hspace{2.1em}3. 程式需顯示黑洞數轉換過程。


\subsection*{(四)範例}
\addcontentsline{toc}{subsection}{(四)範例}

\hspace{3.6em}請輸入 3 或 4 位數: 8904 

\hspace{2.1em} 1. 9840 - 0489 = 9351 

\hspace{2.1em} 2. 9531 - 1359 = 8172 

\hspace{2.1em} 3. 8721 - 1278 = 7443 

\hspace{2.1em} 4. 7443 - 3447 = 3996 

\hspace{2.1em} 5. 9963 - 3699 = 6264 

\hspace{2.1em} 6. 6642 - 2466 = 4176 

\hspace{2.1em} 7. 7641 - 1467 = 6174 

\hspace{2.1em} 8. 7641 - 1467 = 6174


\newpage
\section*{二、程式流程圖}
\addcontentsline{toc}{section}{二、程式流程圖}  

% 插入圖表
\begin{figure}[h]
    \centering
    \includegraphics[width=14cm]{數位家庭程式設計入門練習04.jpg}
   % \caption{圖表說明Caption}
   % \label{fig:T1}
\end{figure}



\newpage
\section*{三、相關指令說明}
\addcontentsline{toc}{section}{三、相關指令說明}  

\subsection*{01.print\footnote{https://www.runoob.com/python3/python-func-print.html}}
\addcontentsline{toc}{subsection}{01.print}  
\hspace{3.6em}用於列印輸出,是最常見的一個函數。

\hspace{2.1em}範例:

\hspace{2.1em}01.print ( “ Hello World “ ) 

\hspace{2.1em}Hello World \\

\hspace{2.1em}02.print("{:.2f}".format(3.1415926))

\hspace{2.1em}3.14


\subsection*{02.while\footnote{https://steam.oxxostudio.tw/category/python/basic/loop.html}}
\addcontentsline{toc}{subsection}{02.while}
\hspace{3.6em}「while 迴圈」是「根據條件判斷,決定是否重複或停止」的迴圈,

\hspace{2.1em}用法為「while 條件:」,如果條件判斷為 True,就會不斷執行迴圈內容,

\hspace{2.1em}如果判斷為False,就會停止迴圈。

\hspace{2.1em}範例:

\hspace{2.1em}a = 1

\hspace{2.1em}while a<=5:

\hspace{3.6em} print(a)

\hspace{3.6em} a += 1

\hspace{2.1em}--- RUN ---

\hspace{2.1em}1 2 3 4 5


\subsection*{03.try: except ValueError:\footnote{待更新}}
\addcontentsline{toc}{subsection}{03.try: except ValueError:}

\hspace{3.6em}當 try 區段內的程式發生錯誤時,就會執行 except 裡的內容,

\hspace{2.1em}如果 try 的程式沒有錯誤,就不會執行 except 的內容,

\hspace{2.1em}範例:

\hspace{2.1em}try:  \#使用 try,測試內容是否正確

\hspace{3.6em} a = int(input('輸入數字:'))

\hspace{3.6em} print(a + 1)

\hspace{2.1em}except:  \#如果 try 的內容發生錯誤,就執行 except 裡的內容

\hspace{3.6em} print('發生錯誤')

\hspace{2.1em}print('hello')

\hspace{2.1em}--- RUN ---

\hspace{2.1em}輸入數字:test

\hspace{2.1em}發生錯誤

\hspace{2.1em}Hello


\newpage
\section*{四、程式}
\addcontentsline{toc}{section}{四、程式}  

% 保持原文字輸出,不轉為 LaTex 語法。
\begin{verbatim}
#
# 數位家庭程式設計入門練習 04
# 名稱:黑洞數
# 姓名:鍾士燊
# 日期:2023 0701
#
## 輸入
from functools import reduce
# 確保玩家輸入為 3 或 4 位數
while True:
    try:
        N = int(input("\n 請輸入 3 或 4 位數: "))
        N = str(N)
        if not (len(N) == 4 or len(N) ==3):
            raise ValueError
        if len(N)==3 and N[0]==N[1]==N[2]:
            raise ValueError
        if len(N)==4 and N[0]==N[1]==N[2]==N[3]:
            raise ValueError
        break
    except ValueError: # 轉換失敗與輸入不為 3 或 4 位數,重新輸入。
        print(' 請重新輸入 3 或 4 位數\n')
        continue
## 處理
num_len = len(N) # 紀錄原始數字長度
次數 = 1
M0, M = 1, 0
while M0 != M: # 停止條件:計算至與前次相同
    最大數_s = sorted(N,reverse=True) # 由大到小排序,文字屬性。
    最小數_s = sorted(N) # 由小到大排序,文字屬性。
    最大數_n = int(reduce(lambda x,y:x+y,最大數_s)) # 文字相加並轉為數字
    最小數_n = int(reduce(lambda x,y:x+y,最小數_s))
    M = 最大數_n - 最小數_n
## 輸出
    print(" {0:4} {1:4} - {2:4} = {3:4}".format(次數,最大數_n,最小數_n,M))
# 下一階段處理的起始設定
    N = str(M) # 將新數轉為文字
    if len(N) < num_len: # 數字長度小於原數字長度,於前面補 0
        N = "0" * (num_len - len(N)) + N
    M0, M = M, M0
    次數 += 1


\end{verbatim}



\newpage
\section*{五、執行結果}
\addcontentsline{toc}{section}{五、執行結果}  

\begin{verbatim}
--- RUN ---
 請輸入 3 或 4 位數: 12
 請重新輸入 3 或 4 位數
 請輸入 3 或 4 位數: 12345
 請重新輸入 3 或 4 位數
 請輸入 3 或 4 位數: 12.99
 請重新輸入 3 或 4 位數
 請輸入 3 或 4 位數: a.bc
 請重新輸入 3 或 4 位數
 請輸入 3 或 4 位數: 8904
 1 9840 - 0489 = 9351
 2 9531 - 1359 = 8172
 3 8721 - 1278 = 7443
 4 7443 - 3447 = 3996
 5 9963 - 3699 = 6264
 6 6642 - 2466 = 4176
 7 7641 - 1467 = 6174
 8 7641 - 1467 = 6174

\end{verbatim}


\newpage
\section*{六、心得與延伸}
\addcontentsline{toc}{section}{六、心得與延伸}  




\end{document}








留言

這個網誌中的熱門文章

大整數的因數分解

提高計算正確性的乘法新算

於 Microsoft surface 上安裝 Windows 子系統 Linux 版