2018年5月5日 星期六

Python | 用線上 repl.it 寫程式和一些基礎語言

Python 除了可以用之前介紹的 jupyter notebook 外,也可以線上直接寫:repl.it

repl.it 除了可以讓你線上寫 code 之外,也可以自學。先申請一個帳號,登入後在右上角會出現功能列:learn/teach, student, my repls

點入 learn/teach 後下面就會出現很多線上課程,像是 Python, Javascript 等等,我目前是在試 Auto-Graded Course with Solutions 這個課,主要是教你怎麼寫程式,如果你之前有學過 C++ 之類的可能會比較容易上手。


(點圖可以放大)

如果直接連上上面那個網址,就會出現下面這個 coding 的頁面,最左欄是檔案夾,你可以登入後把你寫的東西存入。中間那欄是寫 code 的地方,寫好後點上面的 "run",就會在最右邊那欄跑出來。

例如你在中間欄打入:

a = int(input())
b = int(input())
print(a + b)

input() 這個功能是接受使用者輸入的東西,下面會解釋。

int() 的功能跟 R 的一樣,是指 integer,把輸入的東西變成數字的整數。str() 則是可以把數字變成 string。

print() 就是顯示出 () 裡面的結果

之前關於 Python 的那篇有簡單介紹一下,有興趣的可以先看那篇。(注意,這兩篇教的都是 Python 3.xx 以上的版本,Python 2.xx 的語法會有點不同。例如在 Python 2.xx 的版本裡,input() 的預設是 integer,但是在 Python 3.xx 裡則是 string,所以在上面的例子裡,a 和 b 需要用 int(input()) 把輸入的東西變成 integer,而在 Python 2.xx 的版本裡的話則不用,直接用 input() 讀出來的就是數字。)

上面寫好的 code 在跑了之後就會呈現在右欄,也就是你輸入的第一個數字會是 a,第二個數字會是 b,然後它會算出 a + b。所以當我輸入 3 和 5 後,它會算出 8,變成下面這樣:

3
5
8

上面的 3 和 5 是我輸入的數字,8 是它算出來的。

在 R 裡面設定一個 variable 是用 <-,例如上面的例子,在 R 裡面可以寫成這樣:

a <- 3
b <- 5
print(a + b)

之前那篇有提過,Python 讀取的資料型態分為三種:string (字), integer (整數), float (有小數點的)。在數字外加 str() 就會把它變成 string。另外,在 print() 的功能裡,在字的外面加上 " " 或是 ' ' 的話,就會把它變成 string。用 int() 功能就會把獨到的東西變成 integer。

上面的程式簡單介紹了 integer,接下來介紹一下 string 會在哪裡用到。如果你想要在使用者輸入自己的名字後,出現歡迎詞 "Hello, xxx!",那要怎麼寫呢?我們來拆解一下句子。

Hello, xxx! 這個句子可以拆成三部分:
"Hello, " 是 string。
"xxx" 是使用者輸入的名字,也就是 input()。
"!" 是 string。

要如何把這三個東西結合在一起變成一個句子顯示出來呢?有兩個方法,一個是用 +,另一個是用  ,

在 Python 裡面,+ 除了有數學的功能,在 print() 裡面還有結合顯示的功能。

所以這個句子要讓它呈現,需要這樣寫:

print("Hello, " + input() + "!")

Hello, ! 因為是 string,所以要用 " " 括起來。注意,"Hello, " 的後面有個空格,它也是 string 的一部份,所以要放進去,如果沒有放進去,逗號的後面就會直接連名字,變成:

Hello,xxx!

如果是用  的話,就是在每組字後面加  , ,而且每組之間會出現空白, 也就是說上面用 + 時需要自己加空格的部分,用  ,  的話就不需要。例如上面的句子用  ,  寫的話,就是這樣:

print("Hello,", input(), "!")

不過,因為每組字中間會出現空格,所以你輸入名字後,出現的會是:

Hello, xxx !

你也可以把使用者輸入的名字指定為一個 variable,例如 name,指令寫成這樣:name = input()

於是,中間欄的程式碼可以這樣寫:

name = input()
print("Hello, " + name + "!")
print("Hello,", name, "!")

跑了程式之後,當你在右邊輸入名字,它就會出現:

Peter
Hello, Peter!
Hello, Peter !

Peter 是你輸入的名字,"Hello, Peter!""Hello, Peter !" 是程式讀取後顯示出來的 greetings,看出用 + 和用  的不同了嗎?

另外,+ 和  除了空格這個部分不一樣外,還有一個就是 + 不同種類的不能相加在一起,也就是說 interger 和 string 不能相加在一起顯示,需要把它們變成同類。用  的話則沒有這個限制。

例如我想要讓使用者輸入自己的名字和年齡後,出現這樣的句子:xxx is ??? years old

我們可以把句子拆成這樣:
"xxx" 是使用者輸入的名字,所以是 input()。
"is" 是 string
"???" 是使用者輸入的年齡,所以是 input()。
"years old" 是 string

跟上面一樣,可以把名字指定為 name,年齡指定為 age。

name = input()
age = input()

然後用 + 來寫的話就是:(注意要自己空格和把數字改為 string)

print(name + " is " + str(age) + " years old")

用  來寫的話則是:

print(name, "is", age, "years old")

除了讓使用者輸入,Python 跟 R 一樣也可以指定 variable,例如我們可以指定 year 為 1990,birthmonth 為 Feb。

year = 1990
birthmonth = "Feb"
print(birthmonth, year)

Feb 是 string 所以要加 " "。上面的程式碼跑出來就會在右欄顯示出:

Feb 1990

把上面的程式碼混在一起,比較完整的打在中間那欄:

name = input()
age = input()
birthmonth = "Feb"
year = 1990

print(name, "was born in", birthmonth, year)
print(name, "is", age, "years old")

print(name + " was born in " + birthmonth + str(year))
print(name + " is " + str(age) + " years old")

把程式碼跑完後,在右欄輸入名字和年齡:Peter, 28

就會出現:

Peter
28
Peter is 28 years old
Peter was born in Feb 1990
Peter is 28 years old
Peter was born in Feb1990

看出用 + 和用  的不同呢嗎?

最後,+ 用在數字是把兩個數字加在一起,但是用在 string 是把兩個字連在一起。咦,這不是上面講過了嗎?下面用數字做例子,解釋一下為什麼要再次提出來讓大家注意。

例如我想要顯示:The sum of a and b is (a + b)

把句子拆開來看就是:(記得要把句子中的空格算進 string 裡面)
"The sum of " 是 string
a 是 input(),是數字。
" and " 是 string
b 是 input(),是數字。
" is " 是 string
a + b 是算出來的結果,是 integer。

因為句子是 string,所以要用 + 的話,需要把裡面數字的部分在 print() 裡面設為 string,於是就會變成這樣:

print("The sum of " + str(a) + " and " + str(b) + " is " + str(a + b))

如果用 , 的話就不需要,可以寫成這樣:

print('The sum of', a, 'and', b, 'is', a+b)

前面說過,Python 3.xx 裡的 input() 預設是 string,所以要把 a 和 b 設為 integer。

a = int(input())
b = int(input())

另外加 c 和 d 沒有設 int() 的做比較:

c = input()
d = input()

跟 R 一樣,可以查 variable 的格式是什麼。在 R 裡面是用 class() 的功能,在 Python 裡是用 type() 。查詢 a, b, c, d 的格式:

print(type(a), type(b), type(c), type(d))

算算看 a + b 和 c + d 不同在哪:

print(a + b)
print(c + d)

+ 和  的功能顯示:The sum of a and b is ....

print("The sum of " + str(a) + " and " + str(b) + " is " + str(a + b))

print('The sum of', a, 'and', b, 'is', a+b)

把上面的程式碼整合,打在中間欄完整的 code 是:

a = int(input())
b = int(input())

c = input()
d = input()

print(type(a), type(b), type(c), type(d))

print(a + b)
print(c + d)

print("The sum of " + str(a) + " and " + str(b) + " is " + str(a + b))

print('The sum of', a, 'and', b, 'is', a+b)

print('The sum of', c, 'and', d, 'is', c+d)

跑程式碼後,在右邊輸入 a, b, c, d 四個數字,例如 3, 4, 5, 6,就會出現:

3
4
5
6
<class int=""> <class int=""> <class str=""> <class str="">
7
56
The sum of 3 and 4 is 7
The sum of 3 and 4 is 7
The sum of 5 and 6 is 56

3, 4, 5, 6 是你輸入的數字,後面幾行是程式算出來的。可以看到 3 和 4 是 integer,5 和 6 是 string,所以 3 + 4 算出來是 7,但是 5 + 6 算出來是 56,因為是兩個 string 連在一起,而不是兩個數字加在一起。


以上,這篇的 Python 介紹就先到這吧。









沒有留言:

張貼留言

歡迎發表意見