2012-05-11 5 views
0

저는 파이썬을 가르치려고하고 있으며, 그와 함께 몇 가지 일상적인 작업을하고 있습니다. 잠시 후 나는 목록과 문자열로 작업하고있다. 나는 문자열이 불변이므로 문자열을 목록으로 변환하고 목록을 반복하여 모든 모음을 $ 기호로 변경하려고합니다. 문제는 $ 기호가 모음에 기인하지 않는다는 것입니다.파이썬에서 for 루프를 사용하여 배열의 요소를 변경하십시오.

aString = raw_input("Please enter a sentence: ") 

aString = list(aString) 

for i in xrange(len(aString)): 
    if i=='a' or \ 
     i=='e' or \ 
     i=='i' or \ 
     i=='o' or \ 
     i=='u': 
     i.newattribute = '$' 

print aString 
+0

xrange는 문자가 아닌 정수를 생성합니다 :-) –

+0

@MaksymPolshcha 고마워요. 파이썬에서 루프 등에 대해 좀 더 연구해야합니다. 그 (것)들에게 많음이 – adohertyd

+0

모두가 모두 진짜로 그것을 평가하는 도움을위한 감사합니다! – adohertyd

답변

4

난 당신이 언어를 배울 그 일을 알고,하지만 당신은 당신이 알아야 할 단순히 수 서브 메서드에 sub 메서드 사용

2

당신은 다음을 수행 할 : 여기 내 코드입니다

for i in xrange(len(aString)): 
    if aString[i]=='a' or \ 
     aString[i]=='e' or \ 
     aString[i]=='i' or \ 
     aString[i]=='o' or \ 
     aString[i]=='u': 
      aString[i] = '$' 

그러나 아마도 대체 방법을 사용하는 것이 더 쉽습니다.

replaceList = ['a', 'e', 'i', 'o', 'u'] 
aString = raw_input("Please enter a sentence: ") 
for letter in replaceList: 
    aString.replace(letter) 
print aString 
+0

replace 함수는 이전에 보지 못했던 기능입니다. 그 Niek에 감사드립니다. 파이썬은 이전에 보지 못했던 새로운 기능으로 가득 차 있습니다. 저는 C와 C++에 대해서만 익숙합니다. – adohertyd

2
strs="abcduitryd" 
print("".join(('$' if x in 'aeiou' else x for x in strs))) 

$bcd$$tryd 

나 :

strs="abcduitryd" 
lis=list(strs) 
for i,x in enumerate(lis): 
    if x in 'aeiou': 
     lis[i]='$' 
strs="".join(lis) 
print(strs) 

$bcd$$tryd 

나 :

strs="abcduitryd" 
for i,x in enumerate(strs): 
    if x in 'aeiou': 
     strs=strs.replace(strs[i],'$') 
print(strs) 

$bcd$$tryd 
+1

당신은 문자열을'list()'할 필요가 없습니다. 문자열은 반복 가능합니다. – ch3ka

+0

오! 나는 IDE에서 이것을 복사 할 때 그 라인을 삭제하는 것을 잊었다. –

1

"Pythonic"방식은 문자열에 대해 translate 메서드를 사용하는 것입니다.
예 :

import string 
mystr="hello world" 
vowels="aeiou" 
token="$"*len(vowels) 
tab=string.maketrans(vowels,token) 
mystr.translate(tab) 
'h$ll$ w$rld' 
1

당신이 파이썬을 학습하는 경우, 사용할 수있는 하나 개의 멋진 기능은 지능형리스트입니다. 당신은이 작업을 수행 할 수 있습니다

>>> str = "hello world" 
>>> l = ["$" if ch in "aeiou" else ch for ch in str] 
>>> str = "".join(l) 
>>> str 
'h$ll$ w$rld' 

두 번째 줄은 각 문자를 통해 걷고 적용 목록을 작성` "$" "AEIOU"의 채널은 그렇지 ch1 내지합니다. 그런 다음 목록에 합류하여 새 문자열을 얻습니다. 그것은 당신이하려고하는 것을 정확하게하고, 문자열을리스트로 변환하고, 그 과정에서 모음을 '$'로 덮습니다.

물론 이것은 가장 효율적인 방법은 아닙니다. 가장 좋은 방법은 다른 사람들이 언급 한 것처럼 이런 종류의 라이브러리를 사용하는 것입니다.

+0

별도의 목록을 만들 필요가 없습니다. 생성자 표현식으로 변경하고'.join()'안에 넣으면됩니다. – kindall

+0

여기에 목록을 읽을 필요가 없습니다. –

관련 문제