2012-05-15 26 views
-1

我偶然發現了一個新的練習:「如何像計算機科學家一樣思考」。 (開放文檔@http://www.openbookproject.net/thinkcs/python/english2e/ch07.htmlPython for Loop如何像計算機科學家那樣思考

希望得到這方面的一些方向:

prefix="JKLMNOPQ" 
suffix="ack" 

for letter in prefix: 
    print letter + suffix 

,你會得到 傑克,Kack,缺乏,麥克,NACK OACK,包& Qack。

我應該修改什麼,以代替Oack和Qack,我得到Ouack和Quack?

對於學習的緣故,我的嘗試是:

prefix="JKLMNOPQ" 
suffix="ack" 

for letter in prefix: 
    if letter = "O" or "U": 
    print letter + "u" + suffix 
    else: 
    print letter + suffix 

正如你們大多數人會在第一眼注意到,犯了語法錯誤是在如果函數調用使用=代替==。

感謝您的支持,我非常感謝他們。

+2

那你試試? –

+4

您應該接受以往問題的答案。 – jordanm

+0

我重寫了代碼,並在打印字母+後綴後添加了函數調用。事實證明它是一個語法錯誤。我的錯。 –

回答

5

給出的例子依賴於這樣一個事實,即迭代時,一個字符串會給出每個單獨的字符。既然你想讓你的一些前綴有兩個字符,你必須將你的字符串拆分成一個單獨的字符,並在你想要的地方添加u

prefixes=["J", "K", "L", "M", "N", "Ou", "P", "Qu"] 
suffix="ack" 

for letters in prefixes: 
    print letters + suffix 
3

我不會解決這個給你,但會給你一個提示:the if statement可能會派上用場。

+0

我原來是這麼做的;事實證明,我犯了一個語法錯誤。赦免這個職位。 –

+1

@JasonHJH:如果你嘗試了一些東西,但它不起作用,你必須發佈你試過的東西以及它沒有起作用。否則,我們可能會告訴你什麼都不起作用。 – Gabe

+0

@加貝了,謝謝。 –

2
prefix = "JKLMNOPQ" 
suffix = "ack" 

for letter in prefix: 
    if letter == 'O' or letter == 'Q': 
     print "".join((letter, 'u', suffix)) 
    else: 
     print "".join((letter, suffix)) 



Jack 
Kack 
Lack 
Mack 
Nack 
Ouack 
Pack 
Quack 
+0

爲什麼'「」.join([..])而不是'a + b + c'? –

-4

如果我明白的問題(即是如何添加的U僅問答/ O前綴),你最終的東西是這樣的:

for letter in prefix: 
    word = letter 
    if letter in ["O","U"]: 
     word += "u" 
    print word . suffix 
+0

我得到一個運行時錯誤這個..當你運行它爲你做這個工作? 「 – Levon

+1

」。「不是python中的連接運算符。 – jordanm

+1

這不是PHP。 –

3

外觀爲兩個前綴(Q和O),然後添加 'U',否則只是打印像以前

for letter in prefix: 
    if letter in ['Q', 'O']: 
     print letter + 'u' + suffix 
    else: 
     print letter + suffix 

產量:

Jack 
Kack 
Lack 
Mack 
Nack 
Ouack 
Pack 
Quack 
0

這裏是正則表達式的解決方案:

import re 
prefix="JKLMNOPQ" 
suffix="ack" 
names=[re.sub("([OQ])","\\1u",p) + suffix for p in prefixes] 
print "\n".join(names) 

我想指定的問題是糾正輸入,即它不是一個關於如何輸入吮吸,應該是這樣的形式[「J」,「K」的問題, 「L」,「M」,「N」,「Ou」,「P」,「Qu」]或其他。通常,正則表達式替換可以是固定字符串輸入的好方法。 如果你打算「更像一個計算機科學家的想法」,我也建議儘可能使用列表解析來獲取它們的掛件,並將輸出視爲一個單獨的問題。

0

使用

RX = lambda x: re.sub("(O|Q)","\\1u",x) 
map(RX,[x+suffix for x in prefix]) 
0

解決地圖功能和正則表達式:

prefixes = 'JKLMNOPQ' 
suffix = 'ack' 


for letter in prefixes: 
    while True: 
     if letter == 'O': 
      print letter + 'u' + suffix 
      break 
     if letter == 'Q': 
      print 'Quack' # just another solution of the print statement 
      break 
     print letter + suffix 
     break 

我想打破的東西;)