文字列の文字を小文字から大文字に変更したいと思います。
私のコードは以下のとおりです。私のコードで得られる出力はa
です。どこが間違っているのか、その理由を教えていただけますか?前もって感謝します
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
for Word in words:
if Word.isupper() == True:
return Word.lower()
else:
return Word.upper()
print to_alternating_case(test)
これには2つの答えがあります。簡単なものと難しいものです。
簡単なもの
Pythonにはそれを行うための組み込み関数があります、私はそれが何であるかを正確に覚えていませんが、
string.swapcase()
難しいもの
独自の関数を定義します。文字列を反復処理すると文字ごとに返され、反復を続行する代わりに最初の文字を返すだけなので、関数の作成方法は間違っています。
def to_alternating_case(string):
temp = ""
for character in string:
if character.isupper() == True:
temp += character.lower()
else:
temp += Word.upper()
return temp
単語を交互にループした後、最初のアルファベットを返しますが、これは期待したものではありません。文字列をリストに変換するのではなく、直接ループするいくつかの提案があり、式if <variable-name> == True
はif <variable-name>
に直接簡略化できます。次のように変更して答えます。
test = "AltERNating"
def to_alternating_case(string):
result = ''
for Word in string:
if Word.isupper():
result += Word.lower()
else:
result += Word.upper()
return result
print to_alternating_case(test)
またはリスト内包表記を使用する:
def to_alternating_case(string):
result =[Word.lower() if Word.isupper() else Word.upper() for Word in string]
return ''.join(result)
またはmap、lambdaを使用:
def to_alternating_case(string):
result = map(lambda Word:word.lower() if Word.isupper() else Word.upper(), string)
return ''.join(result)
これは、関数が最初の文字のみを返すためです。つまり、return
キーワードはfor
ループを壊します。
また、words = list(string)
を実行して文字列をリストに変換する必要がないことに注意してください。これは、リストの場合と同じように 文字列を反復処理できる であるためです。
swapcase()
の代わりにアルゴリズムソリューションを探している場合は、代わりに次のようにメソッドを変更してください。
test = "AltERNating"
def to_alternating_case(string):
res = ""
for Word in string:
if Word.isupper() == True:
res = res + Word.lower()
else:
res = res + Word.upper()
return res
print to_alternating_case(test)
def myfunc(string):
i=0
newstring=''
for x in string:
if i%2==0:
newstring=newstring+x.lower()
else:
newstring=newstring+x.upper()
i+=1
return newstring
ループは、入力文字列の文字を繰り返し処理します。その後、最初の反復から戻ります。したがって、常に1文字の戻り値を取得します。
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
rval = ''
for c in words:
if Word.isupper():
rval += c.lower()
else:
rval += c.upper()
return rval
print to_alternating_case(test)
あなたはこのようにそれをするべきです:
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
newstring = ""
if Word.isupper():
newstring += Word.lower()
else:
newstring += Word.upper()
return alternative
print to_alternating_case(test)
string=input("enter string:")
temp=''
ss=list(string)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
contents='abcdefgasdfadfasdf'
temp=''
ss=list(contents)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
このコードを関数内に追加することもでき、印刷の代わりにリターンキーを使用します