この記事の練習問題で使用する知識:
入力と出力の基本、コメントの書き方、変数と定数、基本データ型と算術演算子、文字列操作、乱数生成
<<前のページ | Ruby記事一覧 |
次のページ>> |
確認問題:ランダムパスワードを生成しよう
ユーザー名からランダムなパスワードを生成するプログラムを作成しましょう。
このプログラムではユーザー名を入力し、その名前を元にランダムなパスワードを作成します。
作成したパスワードとともに、ユーザー名を画面に表示してください。
この問題の要件
以下の要件に従ってコードを完成させてください。
puts
を使用して「新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:」というメッセージを表示すること。gets.chomp
を使用してユーザー名を入力し、変数name
に保存すること。name
の先頭4文字を取得し、変数pass_name
に保存すること。入力が4文字未満の場合はエラーになること。- 4桁のランダムな整数を生成し、変数
num_pass
に保存すること。この乱数は1000から9999の範囲であること。 pass_name
とnum_pass
を文字列として連結し、変数pass
に保存すること。puts
を使用して「ランダムなパスワードを作成しました。」というメッセージを表示すること。puts
を使用して、ユーザー名とパスワードをそれぞれ画面に表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください: >> alice ランダムなパスワードを作成しました。 ユーザー名:alice パスワード:alic1234
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)
1:puts
を使って「新規登録を開始します。ユーザー名をアルファベット4文字以上で入力してください:」と出力
2:gets.chomp
を使用してユーザーの入力を取得し、変数name
に代入
3:変数name
の先頭4文字を取得し、変数pass_name
に代入
4:rand(1000..9999)
を使って4桁のランダムな数値を生成し、変数num_pass
に代入
5:pass_name
とnum_pass
を文字列として結合し、変数pass
に代入
6:puts
を使って「ランダムなパスワードを作成しました。」と出力
7:puts
を使ってユーザー名を表示
8:puts
を使って生成したパスワードを表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 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_name
とnum_pass
を連結して、1つのパスワード文字列pass
にしています。
これによりユーザー名の一部とランダムな数値が組み合わさったユニークなパスワードが作成されます。
パスワード生成完了メッセージを表示
puts "ランダムなパスワードを作成しました。\n"
この行ではパスワードが作成されたことを通知するメッセージを表示します。
\n
は改行を意味し、ここでは次の表示を新しい行に移動するために使われています。
ユーザー名とパスワードの表示
puts "ユーザー名:#{name}" puts "パスワード:#{pass}"
ここでは生成されたユーザー名とパスワードをそれぞれ表示しています。
"#{...}"
を使ってユーザーが入力した名前name
と生成されたパスワードpass
を文字列内に埋め込み、puts
で出力します。
まとめ
このコードではputs
、gets
、rand
などの基本的なRubyのメソッドを使用して、ユーザー入力とランダムな数値生成の方法を学びました。
特に文字列の一部を取り出す方法や、文字列と変数を連結する方法が重要なポイントです。
Rubyの基本的な操作に慣れ、今後のプログラムで応用できるようにしていきましょう。
<<前のページ |
Ruby記事一覧 |
次のページ>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。