2016-12-05 1 views
0

質問は、タイトルが説明しているように、異なる数字の入力よりも大きい最小の数字を見つけることです。私はプログラミングでの総初心者だと私はこのコードで間違っているものを見つけることができません。次の数字と別の数字CCC 2013先の1

year = 1987 
distinct = 'no' 
a = [] 
while distinct != 'yes': 
    year += 1 
    for i in str(year): 
     if i not in a: 
      a.append(i) 
      distinct = "yes" 
     else: 
      distinct = "no" 
      break 

print(year) 

私は、コードはwhileループにまだあると思いますが、私は理由を理解していません。上記のコードは2013年に印刷されています。ご協力いただきありがとうございます。

+3

私はあなたが望むものについてはっきりしていません。あなたの声明*質問は、数字があなたのコードと全く違うので、数字よりも大きい最小の数字を見つけることです –

+0

ここでの入力は1987です。私はそれについてはっきりしていなかったと申し訳ありません。 –

+0

@ MoinuddinQuadriそれで質問に... – Carpetsmoker

答えて

2

年を1ずつ増やして数字が異なるかどうかを確認する方法は正しいものであり、コードはほぼ正しいです。あなたの間違いは、あなたの年の桁のセットa[]を初期化することですが、それは毎年空に初期化する必要があります。 a = []行をyear += 1の後ろに移動し、適切なインデントを付けるとコードが機能します。そうすれば、あなたのコードは次のようになります:

year = 1987 
distinct = 'no' 
while distinct != 'yes': 
    year += 1 
    a = [] 
    for i in str(year): 
     if i not in a: 
      a.append(i) 
      distinct = "yes" 
     else: 
      distinct = "no" 
      break 

print(year) 

もう1つの方法は、重複を自動的に削除するセットを使用することです。年の文字列をセットにしてサイズを変更するかどうかを確認できます。だから、多分またdistinctのような状態変数を使用して回避する、これを使用する:

year = 1987 
year += 1 
while len(set(str(year))) != len(str(year)): 
    year += 1 
print(year) 

あなたがその状態変数をしたい、またはその繰り返し行year += 1好きではない場合は、あなたがこれを行うことができます:

year = 1987 
distinct = False 
while not distinct: 
    year += 1 
    if len(set(str(year))) == len(str(year)): 
     distinct = True 
print(year) 
+0

ありがとうございました!しかし、私はあなたが「年の各桁をチェックして、それが年にあるかどうかを確認することはできません」という意味を理解していません。私はあなたのコードで何かを間違っていたと誤解していました:@ JimmyQi: –

+0

私はそれをより完全にチェックし、私の答えを改訂しました。私はこれが役立つことを願っています –

関連する問題