W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們將做一些關(guān)于函數(shù)和變量的練習(xí),以確認(rèn)你真正掌握了這些知識(shí)。這節(jié)練習(xí)對(duì)你來說可以說是:寫程序,逐行研究,弄懂它。
過這節(jié)練習(xí)還是有些不同,你不需要運(yùn)行它,取而代之,你需要將它導(dǎo)入到 python 里通過自己執(zhí)行函數(shù)的方式運(yùn)行。
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sorts the words."""
return sorted(words)
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
首先以正常的方式python ex25.py
運(yùn)行,找出里邊的錯(cuò)誤,并修正。然后你需要跟著下面的答案部分完成這節(jié)練習(xí)。
在這節(jié)練習(xí)中,我們將在Python解析器中,以交互的方式和你寫的ex25.py
文件交流,你可以像下面這樣在命令行中啟動(dòng)python解析器:
$ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
你的輸出應(yīng)該和我類似,在>
符號(hào)之后,你可以輸入并立即執(zhí)行python代碼。我希望你用這種方式逐行輸入下方的python代碼,并看看他們有什么用:
import ex25
sentence = "All good things come to those who wait."
words = ex25.break_words(sentence)
words
sorted_words = ex25.sort_words(words)
sorted_words
ex25.print_first_word(words)
ex25.print_last_word(words)
words
ex25.print_first_word(sorted_words)
ex25.print_last_word(sorted_words)
sorted_words
sorted_words = ex25.sort_sentence(sentence)
sorted_words
ex25.print_first_and_last(sentence)
ex25.print_first_and_last_sorted(sentence)
這是我做出來的樣子:
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ex25
>>> sentence = "All good things come to those who wait."
>>> words = ex25.break_words(sentence)
>>> words
['All', 'good', 'things', 'come', 'to', 'those', 'who', 'wait.']
>>> sorted_words = ex25.sort_words(words)
>>> sorted_words
['All', 'come', 'good', 'things', 'those', 'to', 'wait.', 'who']
>>> ex25.print_first_word(words)
All
>>> ex25.print_last_word(words)
wait.
>>> words
['good', 'things', 'come', 'to', 'those', 'who']
>>> ex25.print_first_word(sorted_words)
All
>>> ex25.print_last_word(sorted_words)
who
>>> sorted_words
['come', 'good', 'things', 'those', 'to', 'wait.']
>>> sorted_words = ex25.sort_sentence(sentence)
>>> sorted_words
['All', 'come', 'good', 'things', 'those', 'to', 'wait.', 'who']
>>> ex25.print_first_and_last(sentence)
All
wait.
>>> ex25.print_first_and_last_sorted(sentence)
All
who
當(dāng)你寫完這些代碼,確保你能在ex25.py
中找到運(yùn)行的函數(shù),并且明白它們每一個(gè)都是如何工作的。如果你的運(yùn)行結(jié)果出錯(cuò)或者跟我的結(jié)果不一樣,你就需要檢查并修復(fù)你的代碼,重啟python解析器,再次運(yùn)行程序。
- 研究答案中沒有分析過的行,找出它們的來龍去脈。確認(rèn)自己明白了自己使用的是模塊
ex25
中定義的函數(shù)。- 試著執(zhí)行
help(ex25)
和help(ex25.break_words)
。這是你得到模塊幫助文檔的方式。 所謂幫助文檔就是你定義函數(shù)時(shí)放在"""
之間的東西,它們也被稱作documentation comments (文檔注解)
,后面你還會(huì)看到更多類似的東西。- 重復(fù)鍵入
ex25.
是很煩的一件事情。有一個(gè)捷徑就是用from ex25 import *
的方式導(dǎo)入模組。這相當(dāng)于說:“我要把 ex25 中所有的東西 import 進(jìn)來?!背绦騿T喜歡說這樣的倒裝句,開一個(gè)新的會(huì)話,看看你所有的函數(shù)是不是已經(jīng)在那里了。- 把你腳本里的內(nèi)容逐行通過python編譯器執(zhí)行,看看會(huì)是什么樣子。你可以通過輸入
quit()
來退出Python。
你的函數(shù)末尾可能缺少
return
語句,檢查你的文件,確保每一行代碼的正確性。
import ex25
的時(shí)候遇到報(bào)錯(cuò)import: command not found
.仔細(xì)觀察“你看到的結(jié)果”部分,看我是如何運(yùn)行程序的。我是在python解析器里而不是在命令行運(yùn)行程序。你應(yīng)該先運(yùn)行python解析器。
import ex25.py
的時(shí)候,我遇到報(bào)錯(cuò)ImportError: No module named ex25.py
.不要加上
.py
。Python知道文件是以.py
結(jié)尾的,所以你只要輸入import ex25
就可以了。
SyntaxError: invalid syntax
這個(gè)信息說明在報(bào)錯(cuò)的這一行或之前的某一行你可能少寫了一個(gè)
(
或者"
或者其它的語法錯(cuò)誤。當(dāng)你遇到這個(gè)報(bào)錯(cuò)的時(shí)候,從報(bào)錯(cuò)的行開始,向上檢查是否每一行代碼都是正確的。
words.pop
是如何改變變量words
的值的?這是一個(gè)復(fù)雜的問題,在這個(gè)實(shí)例中,
words
是一個(gè)列表,所以你可以調(diào)用它的一些命令,而它也會(huì)保留這些命令的結(jié)果。這類似于文件的工作原理。
print
代替return
?
return
是從函數(shù)給出的代碼行調(diào)用的函數(shù)的結(jié)果。你可以把函數(shù)理解成 通過參數(shù)獲取輸入,并通過return
返回輸出,而
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: