質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

738閲覧

Python リストに同じ文字がある際に消去をする

Kawachan99

総合スコア114

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/05/06 09:18

Python 3.x でパスワード生成をするコードを書いているのですが、生成する際に文字のダブりを確認してダブっていた場合にその文字をスキップする処理を書きたいのですが、現在のコードのどの部分を訂正すると良いでしょうか?

import random, string random_data = string.ascii_letters + string.digits + string.punctuation password = [] for i in range(15): random_pass = random.choice(random_data) password.append(random_pass) for t in range(i): if password[t] == random_pass: password.pop(i) print(''.join(password))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

原型をできるだけ残すなら。

Diff

1-for i in range(15): 2+i = 0 3+while i < 15: 4 random_pass = random.choice(random_data) 5 password.append(random_pass) 6 for t in range(i): 7 if password[t] == random_pass: 8 password.pop(i) 9+ i -= 1 10 11+ i += 1

別解1

文字の存在判定はinで可能です。
また、リストから値を消去するより、加える条件を考える方が簡単です。

Python

1i = 0 2while i < 15: 3 random_pass = random.choice(random_data) 4 5 if random_pass in password: 6 continue 7 8 password.append(random_pass) 9 i += 1

別解2

重複が無い抽出をしたいときは、シャッフルした方が簡単です。

Python

1random_data = list(random_data) 2random.shuffle(random_data) 3password = random_data[:15]

あるいは単に

Python

1password = random.sample(random_data, 15)

投稿2021/05/06 09:28

編集2021/05/06 09:36
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じですね。

python

1import random, string 2 3random_data = string.ascii_letters + string.digits + string.punctuation 4 5password = [] 6i = 0 7while i < 15: 8 random_pass = random.choice(random_data) 9 if not random_pass in password: 10 password.append(random_pass) 11 i += 1 12 13print(''.join(password))

投稿2021/05/06 09:30

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問