【Ruby】確認問題1-☆1:ランダムパスワードを生成しよう

記事内に商品プロモーションを含む場合があります

この記事の練習問題で使用する知識:
入力と出力の基本コメントの書き方変数と定数基本データ型と算術演算子文字列操作乱数生成

<<前のページ Ruby記事一覧 次のページ>>

確認問題:ランダムパスワードを生成しよう

ユーザー名からランダムなパスワードを生成するプログラムを作成しましょう。

このプログラムではユーザー名を入力し、その名前を元にランダムなパスワードを作成します。

作成したパスワードとともに、ユーザー名を画面に表示してください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • putsを使用して「新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:」というメッセージを表示すること。
  • gets.chompを使用してユーザー名を入力し、変数nameに保存すること。
  • nameの先頭4文字を取得し、変数pass_nameに保存すること。入力が4文字未満の場合はエラーになること。
  • 4桁のランダムな整数を生成し、変数num_passに保存すること。この乱数は1000から9999の範囲であること。
  • pass_namenum_passを文字列として連結し、変数passに保存すること。
  • putsを使用して「ランダムなパスワードを作成しました。」というメッセージを表示すること。
  • putsを使用して、ユーザー名とパスワードをそれぞれ画面に表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:
>> alice
ランダムなパスワードを作成しました。

ユーザー名:alice
パスワード:alic1234

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:putsを使って「新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:」と出力
2:gets.chompを使用してユーザーの入力を取得し、変数nameに代入
3:変数nameの先頭4文字を取得し、変数pass_nameに代入
4:rand(1000..9999)を使って4桁のランダムな数値を生成し、変数num_passに代入
5:pass_namenum_passを文字列として結合し、変数passに代入
6:putsを使って「ランダムなパスワードを作成しました。」と出力
7:putsを使ってユーザー名を表示
8:putsを使って生成したパスワードを表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 1. 新規登録メッセージを表示
puts "新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:"

# 2. ユーザー名を入力し、変数nameに保存
name = gets.chomp

# 3. nameの先頭4文字を取得し、変数pass_nameに保存(4文字未満だとエラーになります)
=begin
【穴埋め問題1】
ここで変数nameの先頭4文字を取得し、変数pass_nameに保存してください。
=end

# 4. 4桁の乱数を生成し、変数num_passに保存
=begin
【穴埋め問題2】
ここで4桁の乱数を生成し、変数num_passに保存してください。1000〜9999の範囲でランダムな数値を生成する必要があります。
=end

# 5. pass_nameとnum_passを連結して、変数passに保存
=begin
【穴埋め問題3】
ここでpass_nameとnum_passを連結して、変数passに保存してください。
=end

# 6. ランダムなパスワード生成完了メッセージを表示
puts "ランダムなパスワードを作成しました。\n"

# 7. ユーザー名とパスワードを表示
puts "ユーザー名:#{name}"
puts "パスワード:#{pass}"

この問題の穴埋めコードは以上です。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

確認問題の正解コードと解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# 1. 新規登録メッセージを表示
puts "新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:"

# 2. ユーザー名を入力し、変数nameに保存
name = gets.chomp

# 3. nameの先頭4文字を取得し、変数pass_nameに保存(4文字未満だとエラーになります)
pass_name = name[0, 4]

# 4. 4桁の乱数を生成し、変数num_passに保存
num_pass = rand(1000..9999)  # 1000〜9999の4桁の乱数

# 5. pass_nameとnum_passを連結して、変数passに保存
pass = "#{pass_name}#{num_pass}"

# 6. ランダムなパスワード生成完了メッセージを表示
puts "ランダムなパスワードを作成しました。\n"

# 7. ユーザー名とパスワードを表示
puts "ユーザー名:#{name}"
puts "パスワード:#{pass}"

正解コードの解説

今回のRubyコードではユーザーの名前を入力し、それをもとにランダムなパスワードを生成する方法を学びます。

各ブロックにどのような処理が行われているのか詳しく見ていきましょう。

新規登録メッセージを表示する

puts "新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:"

この行ではputsメソッドを使用して画面にメッセージを表示します。putsはRubyで文字列を出力し、自動的に改行を行う基本的なメソッドです。

ユーザーに名前を入力するよう促すメッセージを表示しています。

ユーザー名の入力と保存

name = gets.chomp

getsはユーザーからの入力を受け取るメソッドです。

chompを使うことで入力された文字列の末尾に含まれる改行文字を取り除いて、変数nameに保存しています。

これによりユーザーが入力した名前が変数nameに格納されます。

ユーザー名の一部を取得し、変数に保存

pass_name = name[0, 4]

ここでは変数nameから最初の4文字を抽出し、変数pass_nameに保存しています。

name[0, 4]という記法により名前の先頭4文字が取り出されます。これを使うことで、名前の一部をパスワードの一部として利用しています。

4桁のランダムな数値を生成

num_pass = rand(1000..9999)

rand(1000..9999)は1000から9999の間のランダムな4桁の数値を生成します。

この数値が変数num_passに保存され、後のパスワードの一部として使われます。

パスワードの生成

pass = "#{pass_name}#{num_pass}"

"#{...}"という記法は文字列内で変数を展開するための記法です。

この行ではpass_namenum_passを連結して、1つのパスワード文字列passにしています。

これによりユーザー名の一部とランダムな数値が組み合わさったユニークなパスワードが作成されます。

パスワード生成完了メッセージを表示

puts "ランダムなパスワードを作成しました。\n"

この行ではパスワードが作成されたことを通知するメッセージを表示します。

\nは改行を意味し、ここでは次の表示を新しい行に移動するために使われています。

ユーザー名とパスワードの表示

puts "ユーザー名:#{name}"
puts "パスワード:#{pass}"

ここでは生成されたユーザー名とパスワードをそれぞれ表示しています。

"#{...}"を使ってユーザーが入力した名前nameと生成されたパスワードpassを文字列内に埋め込み、putsで出力します。

まとめ

このコードではputsgetsrandなどの基本的なRubyのメソッドを使用して、ユーザー入力とランダムな数値生成の方法を学びました。

特に文字列の一部を取り出す方法や、文字列と変数を連結する方法が重要なポイントです。

Rubyの基本的な操作に慣れ、今後のプログラムで応用できるようにしていきましょう。

<<前のページ Ruby記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyテキスト&問題集へ戻る
    トップページへ戻る