2012-12-20 54 views
0

我正在研究屬於Google Python類的string1練習。我有問題,問題是C:google python class string1練習

C. fix_start 
Given a string s, return a string 
where all occurences of its first char have 
been changed to '*', except do not change 
the first char itself. 
e.g. 'babble' yields 'ba**le' 
Assume that the string is length 1 or more. 
Hint: s.replace(stra, strb) returns a version of string s 
where all instances of stra have been replaced by strb. 

我想用一個循環比較的第一個字母一個字母一個用「*」代替任何比賽。我認爲必須有一個更簡單的方法。有沒有人有什麼建議?

回答

1

是的,有做一個更簡單的方法,問題已經給你一個提示:

s.replace(stra, strb)返回其中stra所有實例都被替換strb字符串的一個版本。

想想如何使用該功能。

0

已經有提供一個提示,它不使用一個循環涉及!

它建議使用s.replace(stra, strb)並介紹了什麼是會的,所以給出的問題陳述的效果讓我們來看看什麼sstra,並且strb應該的。

  • 我們只想第一個字符後更換出現,所以在s.replace(stra, strb)s應該是從第二個字符的一切。我們可以使用片段s[1:](這裏s是傳遞給函數的參數)得到這個結果。
  • 由於我們要替換所有出現的第一個字符,因此stra應該是第一個字符,或者s[0](同樣s是參數)。
  • strb是容易的,它說,我們正在與*更換比賽,所以strb'*'

所以在某處你的功能,你會想s[1:].replace(s[0], '*'),這將讓你最的方式存在。

1

這是我得到的,沒有循環要求。

def fix_start(s): 

    return s[0]+s[1:].replace(s[0], '*') 

這隻適用於考慮他們告訴我們我們應該假設字符串不是''。在這種情況下,返回線應該移動到一個if,並且首先檢查len。

+1

最好的答案海事組織。 – AndreeCrist

0

這是我長期的解決方案。我把它分成兩部分,並在字符串的第二部分替換字的'其餘部分'。這是更長的時間,但包括在這裏展示一個思考過程來解決這個難題。

def fix_start(s): 
    star = s[0] 
    rest = s[1:] 
    rest = rest.replace(star,'*') 

    return star+rest