跳到主要內容

Python筆記(1)-變數、資料型態與input(),print()函數的操作


1.1           變數

在程式設計中變數的功用是用來暫存數據或資料,之後在程式中可以使用變數直接進行數據與資料的操作。其中,變數的命名盡量以易辨識、與使用用途相關、不可為保留字(後面會介紹)的方式命名。將變數放入print()函數中則可在console畫面呈現變數值。以下用一個範例說明:

程式碼

# 沒使用變數進行複利計算:給定本金1000,利率5%,期數12期計算複利結果

print(1000*(1+0.05)**12)

Python畫面

程式碼

# 使用變數進行複利計算:給定本金1000,利率5%,期數12期計算複利結果

principal=1000

interest=0.05

times=12

compound=principal*(1+interest)**times

print(compound)

Python畫面

從這兩個例子也許你看不出使用變數的威力,但試想一下,如果今天有1000行程式,其中有500行都要使用本金,用第一種寫法則是500行本金的部分都是1000,但用第二種寫法則是500行本金的部分都是principal,此時如果想要更改本金為1200第一種寫法就必須將那500行的1000更改為1200,第二種寫法則只要在principal=1000這一行修改為principal=1200剩下的499行都不需要修改,這將使得程式的效率大大提升又容易維護。

如果要指定多個變數,方法如下:

程式碼

# 多個變數指定相同的值

a=b=c=30

s1=s2=s3="Hi I am string"

print(a,b,c)

print(s1,s2,s3)

Python畫面

程式碼

# 多個變數指定不同的值

a,s1 = 20 , "Hello"

print(a,s1)

Python畫面

先前提到變數命名時不可為保留字,什麼是保留字呢? 保留字其實就是在Python中已經被用來作為特殊功能或函數的名稱字眼,譬如print就是一種保留字,他具有將變數值呈現在console畫面的功能,所以之後在對變數命名時就要避開print,避免變數功能混淆。Python常見的保留字如下:

Ø  變數只能是數字、英文字母、_符號、中文的組合。Python在變數命名的規則有以下四點需特別注意:

Ø  變數第一個字母不可以是數字。

Ø  英文字母大小寫視為不同變數

Ø  不可為保留字。

需注意一下,不建議用中文做為變數名稱,這會導致程式的可攜性降低。


1.2           資料型態

資料型態大致分成邏輯值、數值、字串(文字)三種,以下分別介紹這三種資料型態:

Ø  邏輯值又稱布林值(bool),主要用True False表示,通常會出現在if條件判斷式中(後續會介紹),也通常與and/or/not等運算子搭配使用。

程式碼

#邏輯值(布林值)

flag1=True

flag2=False

Ø  數值分為兩種:整數(int)及浮點數(float)

程式碼

#整數與浮點數

num1=20     #整數

num2=12.34  #浮點數

num3=20.0   #浮點數

Ø  字串(文字)是一種內容用雙引號「」或單引號「」包起來的資料型態。

程式碼

#字串(文字)

str1="Johnson"

str2="Hello, welcome to python world."

str3="0912345678"

Python畫面

如果想在字串中加上引號的符號,可整個字串用另一個引號包住或著將字串中的\”代替。(\稱為跳脫字元,後續會介紹)

程式碼

#字串中想包含引號"

str1='My phohne number is "0912345678".'

str2="My phohne number is \"0912345678\"."

print(str1)

print(str2)

Python畫面

Pythontype()函數可以用來判斷目前的變數的資料型態,不同的資料型態會有不同的運算方式,所以了解目前變數是處於哪一種資料型態是非常重要的type()用法如下:

程式碼

#type()函數的使用

flag1=True

num1=20   

num2=12.34

str3="0912345678"

print(type(flag1),type(num1),type(num2),type(str3))

Python畫面

1.3           print()input()

print()函數是可以將變數的值呈現在console畫面上;input()函數則可以在console畫面上提供輸入功能,讓使用者輸入想輸入的內容,所以print()input()分別表示輸出與輸入的功能。

Ø  使用input()函數通常會在括號內寫上一段字串,作為提示字串,提醒使用者要輸入的內容。

程式碼

#input()函數的使用

num_1=input("請輸入第一個數字:")

num_2=input("請輸入第二個數字:")

print("此兩數字總和:",num_1+num_2)

Python畫面



相信你有發現數字總和它呈現了1213不是25,這是因為input()函數的結果必為字串(文字),而字串間用+運算結果就是將兩個字串相接,所以才會出現1213的情形,如要解決且情形,我們可使用int()float()將數值型字串轉換成數值。

程式碼

#input()函數搭配int()函數的使用

num_1=int(input("請輸入第一個數字:"))

num_2=int(input("請輸入第二個數字:"))

print("此兩數字總和:",num_1+num_2)

Python畫面

程式碼

#input()函數搭配float()函數的使用

num_1=float(input("請輸入第一個數字:"))

num_2=float(input("請輸入第二個數字:"))

print("此兩數字總和:",num_1+num_2)

Python畫面

Ø  print()函數提供了分隔參數(sep)與結尾參數(end)的設定,可使顯示的內容更能貼近使用者想呈現的效果。

程式碼

drive=input("請輸入您要將檔案存入到D槽或C:")

drive=drive+":"

folder_name=input("請輸入資料夾名稱:")

file_name=input("請輸入檔案名稱:")

print("以下是您的存檔路徑:")

print(drive,folder_name,file_name,sep='//')

Python畫面

從上面範例看的出來,sep=”//”的功能就是將drive, folder_name, file_name這三個變數值用//隔開並相接,最後呈現在console畫面。在print()sep參數預設為一個空白字元” “ 

程式碼

#print()函數的end參數使用(1)

print("I'm Bob, ",end="")

print("What's your name?")

Python畫面

程式碼

#print()函數的end參數使用(2)

print("I'm Bob, ",end="\n")

print("What's your name?")

Python畫面

 

程式碼

#print()函數的end參數使用(3)

print("I'm Bob, ",end="\n\n")

print("What's your name?")

Python畫面

程式碼

#print()函數的end參數使用(4)

print("I'm Bob, \n\n"+"What's your name?")

Python畫面

從上面的範例看得出來end=” “是不換行,直接接著下一個print()的結果;end=”\n”是換行後呈現下一個print()的結果; end=”\n\n”是換兩行後呈現下一個print()的結果,我們也發現在字串中加入\n也會有換行效果,不一定需要依靠end參數才能有換行的效果。在print()end參數預設就是”\n”

留言

這個網誌中的熱門文章

RPA-Uipath筆記(1) - 如何從網路上下載資料並存至指定路徑

最近在做 RPA 相關專案時遇到了這個問題: 如何從網路上下載資料並存至指定路徑? 針對這個問題我們採取的解決方案是 先讓檔案下載到電腦的預設路徑,再將檔案移動到我們指定的資料夾 。 以下我們用下載政府公開資料平台的資料 ("https://data.gov.tw/dataset/116285") 為例, Uipath 的流程建立如下: 使用到了 Wait for Download 、 Move File 、 Delete File 三個 Activity , Wait for Download 中 Monitored folder 必須放瀏覽器中設定的下載檔案的預設路徑且關閉詢問儲存位置。 Downloaded file 則是設定一個變數名稱 downloadfile( 可自訂 ) ,此變數的資料型態是 FileInfo 。中間則放入下載的流程步驟,從下載開始到結束都會在此 Activity 中執行完畢,執行完後所下載的檔案的相關資訊都會被存放在變數 downloadfile 中。 接下來是將檔案從預設下載路徑中移至指定路徑,這裡就需要下載預設路徑與指定路徑,這兩個我們在流程一開始就建了了兩個變數 dnlo_path 、 asng_path ,寫法如下: dnlo_path = "C:\Users\" +system.Environment.UserName+ "\Downloads" system.Environment.UserName à VB 語法,代表目前電腦的使用者名稱。 asng_path = "D:\Bolg 資料 \Uipath\Uipath(1)" Move File Activity 中 From 要放入目前檔案的位置; To 則要放入檔案存放的指定的位置,但因為是要做檔案的移動,所以以上兩個路徑後面都要再加上檔案名稱,這時可以使用 downloadfile 這個變數的屬性值叫出檔案名稱( downloadfile.Name ),當檔案名稱是隨機變動的時候,非常好用。另外,特別值得注意的是, To 的部分在加上檔案名稱時,可以不用用原始檔案的名稱,這時可以同時達到修改檔名的效果。 Overwrite 的部分打勾代表再重複執行一次的時...

RPA-Uipath(2) - 字串分割(String.Split())與合併(String.join())

在資料清理中,我們常常需要對字串進行分割或合併,今天來簡單介紹 Uipath 中字串如何進行分割與合併。 1.      字串分隔 ( 單一分割符號 ) 我們首先建了一個字串變數 Str1= "Jimmy,Johnson,Shawn,Alan,Nick" ,我們現在想把這些人名一個一個切割出來,很明顯只要將 ”,” 作為分個符號就可以了。這邊我們建立一個陣列變數 Str1_Array=Str1.split(","c) ,這個陣列變數就會儲存分割出來的結果。我們接下來用 For each 與 Write Line 將陣列的每一項內容印出來,就可以知道我們分割的結果有沒有成功。 2.      字串分隔 ( 多個分割符號 ) 我們首先建了一個字串變數 Str2= "Jimmy,Johnson.Shawn Alan,Nick" ,我們現在想把這些人名一個一個切割出來,很明顯要將 ”,” 、 ”.” 、 ” “ 都作為分個符號才能完整分割。這邊我們建立一個陣列變數 Str2_Array= Str2.Split(",|.| ".ToArray()) or Str2.Split({","c,"."c," "c}) ,這個陣列變數就會儲存分割出來的結果。我們接下來用 For each 與 Write Line 將陣列的每一項內容印出來,就可以知道我們分割的結果有沒有成功。 3       字串的合併 (Array 字串元素合併 ) 我們首先建了一個字串變數 Str3_Array= {"John","Jimmy","Shawn","Alan"} ,我們現在想把這些人名中間用 ”|” 符號隔開並且變成一個字串,這裡我們是用 String.Join( 連接符號 , 陣列 ) 這個函數達到這個目的。我們建立一個變數 Str3_Join ,使 Str3_Join=String.Join("|", Str3_Array) ,此時 Str3_Join 的結果就會是 John|Jimmy|Shawn|Alan 。我們接下來用 Write...

RPA-Uipath(5)-如何讀取Mail與取得Mail的資訊

本篇主要介紹 Uipath 取得 mail 相關資訊與附件的方法,因為 mail 的種類眾多,本範例以 Gmail 為例。首先在使用 Uipath 取得 Gmail 相關資訊前須對 Google 帳戶的安全性進行兩階段驗證設定,設定方式如下: Step1. 點選 ” 管理你的 Google 帳戶 ” Step2.  點選 ” 安全性 ” à ” 兩階段驗證 ” à 點選 ” 開始使用 ” Step3.  依 Google 所提示步驟,您最後會取得一組密碼,請務必將此密碼記下。 接下來要開始使用 Uipath 擷取 mail 相關資訊,一開始我們先使用 Get Password 儲存 mail 登入的密碼,此時密碼不是使用您真正的密碼而是使用剛剛兩階段驗證後取得的密碼,並儲存於變數 password 。 接下來使用 Get IMAP Mail Messages 來取得 mail 的相關資訊,在使用 Get IMAP Mail Messages 時必須在其屬性設定區塊進行一些參數設定。 Port 欄位填入 993 , Server 欄位填入 "imap.gmail.com" , Email 欄位填入您的 Email , Password 欄位填入 變數 password , Message 欄位我們用 MailMessage 變數填入 Mail 的相關資訊都會存在 MailMessage 變數中,我們可以用 For Each 迴圈逐一取得 mail 的相關資訊。 For Each 的屬性區塊部分也需要進行一些參數設定, List of item 欄位需填入 MailMessage 變數, TypeArgument 則須設定為 System.Net.Mail.MailMessage 。 設定完成後,我們先用 Write Line 將信件的主旨印出做為測試( 這邊我們只印出前 5 封信件的主旨,可在 Get IMAP Mail Messages 的屬性區塊中 Top 欄位中設定 ),如果要印出信件主旨,需要用 item.Subject 屬性,如要印出其他資訊,我們將常用的幾個列在以下表格: 最後,有些信件會附帶一些附件,我們如何將這些物件儲存下來呢 ? 這邊只需要用到 Save Attachments 即可。我們將其放在迴圈內以下載每個有附件的 mail...