2016-10-17 1 views
-3

4数字文字列の中に重複する数字があるかどうかをチェックするプログラムを実行する必要があります。 問題は、時間の80%のように、プログラムが間違っていない数字も有効でないと分類することです。あなたは数文字列からset()を作成し、セットの長さを評価しないのはなぜ私のプログラムは、文字列内に重複が正しくないかどうかを確認しません。

import random 
def extraction(): 
    random_number = str(random.randint(1000,9999)) 
    print(random_number) 
    for number in random_number: 
     n = 0 
     print("number1 ",number) 
     for number2 in random_number: 
      print("number2 ",number2) 
      if(number == number2): 
       n = n + 1 
       print("n ",n) 
       if(n == 2): 
        print("The extracted number is not valid.\n") 
        extraction() 
+5

ほとんどのコードはあなたの質問とは無関係です。 [最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。そのコードのどの部分がテストをしますか?また、間違った結果をもたらす価値を与えてください。 –

+1

@RoryDaultonコードのどの部分が無関係ですか?それは正しいコードのようです。彼の質問はあまり明確ではありませんが、私は彼の質問に関係しないコードは見ません。 – bravosierra99

+0

私は50%のS.O.ユーザーはデスクトップの背景として[mcve](http://stackoverflow.com/help/mcve)リンクを持っています。(時には、人々を助けるのがもっと簡単です... – Aaron

答えて

4

>>> set('1234') 
set(['1', '3', '2', '4']) 
>>> set('1123') 
set(['1', '3', '2'])
0

はなぜstr.count()機能を使用しない:重複する数字がある場合は、唯一つのエントリは、動作原理の

if len(set(str(random_number))) == 4: 
    pass #you have 4 unique digits 

例セットに保存されますか?

def extraction(): 
    random_number = str(random.randint(1000,9999)) 
    print(random_number) 
    if any([random_number.count(i)>1 for i in random_number]): 
     print("The extracted number is not valid.\n") 
     extraction() 
関連する問題