パスワードの強度を調べるプログラムで弱いのにInvalidとでないでValidと出てしまいます。
自分的にはこれで正しいように見えるのですが上手く行きません。
同じ出力になってしまうのです。
条件として
長さが6文字以上
英字と数字の両方を含む必要がある
同じ文字を3つ以上連続で使用してはいけない。
大文字と小文字の区別はいらないです。
この条件をすべて満たせばValidそうじゃない場合はInbvalidと出力したいです。
以下私が書いたプログラムです。 エラーメッセージはありませんでした。
python3
1t=list(input()) 2 3if len(t)<6: 4 print("Invalid") 5else: 6 for i in range(len(t)): 7 if t[i].isdecimal()==True: 8 s=1 9 10 else: 11 b=1 12 z=0 13 if s==1 and b==1: 14 j=0 15 y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0] 16 p=len(t)-1 17 for i in range(p): 18 19 if t[i]==t[i+1]: 20 y[j]+=1 21 else : 22 j+=1 23 z=0 24 for i in range(j): 25 if y[i]>2: 26 print("Invalid") 27 z=1 28 if z==0: 29 print("Valid") 30 else : 31 print("Invalid")
作動しない、というのは具体的にどういう状況でしょうか?
特定の入力で正しい結果が出せないのであれば、その条件や例を示しましょう。:-)
(間違いを全部探して!という質問は丸投げとみなされてしまいますので。)
言い方が悪かったですね
全ての入力に対し同じ出力になってしまうのです。
とりあえず短い文字列は正しく結果が出るようです。
$ python test.py
123
Invalid
> 全ての入力に対し同じ出力になってしまうのです。
> 以下私が書いたプログラムです。 エラーメッセージはありませんでした。
試しに手元で動かしてみた範囲では、そんなことはなかったのですが。
abced
=> Invalid
abc123
=> Valid
abcdef
=> NameErrorで正常動作せず
123456
=> NameErrorで正常動作せず
aaaaaa
=> NameErrorで正常動作せず
aaabbbcccdddeeefffggghhhiiijjjkkklllmmmoooppp111rrrssstttuuuvvvxxxwwwyyyzzz01932
=> IndexErrorで正常動作せず
aaabcdef1
=> Valid
エラーメッセージは作ったときのです
紛らわしくてすいません
みなさんが言うのは、「全ての入力に対し同じ出力になってしまう」と書いてあるが、実際に提示されたコードを実行してみると、入力によって異なる結果が出るので、貴方の質問が成立していないということです。
提示のコードにはいろいろ問題があるのですが、まずは認識が合っていないと先に進めません。
こういう場合よくあるのは、実行しているファイルと修正したファイルが異なる場合です。 修正して保存してないとか、修正して名前を変えたのに実行するときに変えてないとか、他の場所に保存していたとか。
> パスワードの強度を調べるプログラムで弱いのにInvalidとでないでValidと出てしまいます。
上記が発生した具体的な入力文字列は何ですか?