2017-11-10 19 views
-2

結果が(st)の最大桁と偶数桁を返し、偶数桁を持たない関数を返します。 -3結果として。すべての/すべての助けが大歓迎です。以下のコードは私の試みであり、私が望んでいる結果を得ることはできません。ちょうどPythonの使い方を学び始めました。ありがとうございました。私はPython 3.6を使用しています。Python:文字列の偶数桁を最大に見つける関数

def maximumeven(st): 
    Result = 0 
    for i in (st): 
     if i.isdigit(): 
      if (int(i) % 2 == 0): 
       Result = Result + int(max(i)) 
      return Result 
print(maximum("124A2")) 
+1

あなたのコードは現在、偶数の整数を結果に追加します。それは意図されていますか?言い換えれば、偶数の合計が必要ですか? 'maximumeven(" 124A2 ")の出力は何ですか? 4? – James

+0

意図していない、ちょうど最高の1桁の偶数番号を探しています。 –

+0

ようこそStackOverflowへ。本質的に私たちにあなたの宿題を依頼する質問を投稿しないでください。代わりに、あなたに混乱していることに関する特定の質問を投稿してください。 – jpmc26

答えて

-2

あなたは本当にただの最大のさえをしたい場合は、唯一の5つの桁偶数があるので、私は使用したい:

def maximumeven(st): 
    if "8" in st: 
     return 8 
    if "6" in st: 
     return 6 
    if "4" in st: 
     return 4 
    if "2" in st: 
     return 2 
    if "0" in st: 
     return 0 

    return -3 

print(maximumeven("124A2")) #4 
print(maximumeven("13579")) #-3 
print(maximumeven("2468")) #8 

文字列を1回だけ繰り返し、8に達するとすぐに終了するはるかに効率的なソリューション:

def maximumeven(st): 
    largest = - 3 
    for i in st: 
     if i in '02468' and int(i) >largest: 
      largest = int(i) 
     if largest == 8: 
      break 
    return largest 
+0

本当ですか? https://ideone.com/6Hnd18 – jfowkes

+0

ありがとうございます! –

+0

非常に非効率です。文字列を5回スキャンします。 – jpmc26

-1

このコードを試してください:。

def maximumeven(st): 
    Result = [] 
    for i in (st): 
     if i.isdigit(): 
      if (int(i) % 2 == 0): 
       Result.append(int(i)) 

    if not len(Result): 
     Result = -3 
    return Result 
func = maximumeven("124dsd89") 
print(max(func) if type(func) is list else func) 

出力:8

+0

文字列からの最大の桁が結果でなければならず、偶数の桁が1つもない場合は-3を返します。とにかく助けてくれてありがとう。 –

+0

@JamesJohnson私の更新された回答を参照してください –

+0

リストを追加する*完全に*不要です。あなたの 'max(i)'呼び出しは何もしません。 – jpmc26

関連する問題