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

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

ただいまの
回答率

90.50%

  • Ruby

    7897questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

ruby 基礎  条件分岐

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 440

xxx

score 7

![イメージ説明

4文字以上10文字以下のパスワード123456をうったら

パスワードは適切な長さです
でるはずなんですがでません
コンソールのパスワードが入力されましたの下のような
エラーはパスワードが何文字でも出ました

でも正解になってるのですが

パスワードは適切な長さですってでるようにするには
どうすればいいですか?

コード間違えてますか? 他の書き方ありますか?

教えてくださいよろしくおねがいします

前営利目的とか?で評価下げられて
サイト名それから書かなくなったんですけど
そこで学んでるだけです そういう目的ないです
そのサイトでわかんないから そのサイト知ってもらったら
そこで問題やってもらったら回答しやすいんじゃないかと回答できるんじゃないかと思ったんで そういう人いたんでそれどこの問題?みたいな そしてやってくれて 教えてくれたんです

この問題はprogateにあります

コードputs "パスワードを入力してください"
password = gets.chomp

# 変数password_lengthにpasswordの文字数を代入してください
password_length = puts password.length

# password_lengthが0でない場合に"パスワードが入力されました"とputsしてください
unless password_length==0
puts "パスワードが入力されました"
end

# password_lengthが4文字以上10文字以下の場合に"パスワードは適切な長さです" とputsしてください
 if password_length>=4&&passowrd_length<=10
   puts "パスワードは適切な長さです"
 end
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

puts password.lengthpassword.lengthを画面に出力するだけです。
password.lengthの値それ自体ではありません。

password_length = puts pasword.lengthだと、
password.lengthを画面に出力する」の結果をpassword_lengthに代入しています。

password.lengthを画面に出力する」の結果ってpassword.lengthなんじゃないの?
と思うかもしれませんがRuby的にはnilという値(というかなんというか)になります。

というわけでその書き方だと、password.lengthにはnilが入ります。

期待している動作をさせたいなら
password_lengthにそのまんまpasword.lengthを代入しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/23 19:03

    password.lengthという言葉を画面に出力するだけですか?
    同じ結果の時にnilを使うんですか?

    pasword_lengthにそのまんま password.lengthを入れたらコンソールに
    ↓出ました
    /home/progate/index. rb:13: in <main>' : unde ined local variable or method `passowrd_le gth" for main:Object (NameError)

    この表示は適切な長さの時(4〜10を除いた数)だけでます
    パスワードが適切な長さですの表示が以前出ません

    キャンセル

  • 2016/03/23 22:43

    スペル間違えてますよ

    キャンセル

  • 2016/03/24 00:49 編集

    puts password.lengthだと passwordの長さではなくてpassword.lengthという文字を画面に出力するということですね?

    というわけでその書き方だと、password.lengthにはnilが入ります。のところ他の回答者を正解とするとpassword_lengthの間違いですね 

    nilはまだ?です 

    確かに間違えてました ちゃんと動きました ありがとうございます

    キャンセル

0

プログラムを間違えてますね。

password_length = puts pasword.length


にどんな動作を期待していますか? password_length に長さは入りませんよ。nilが入ります。

あと、プログラムは画像でなくテキストで入力してください。コピペできないじゃないですか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/23 15:59 編集

    password_length=puts password.length  は passwordを入力した時に
    その文字数がわかる動作を期待してます

    nilはまだ習ってないのでまだ出てきてないので違うと思います
    画像のほうが楽だったのですいません

    キャンセル

  • 2016/03/23 21:36

    > passwordを入力した時にその文字数がわかる動作を期待してます
    それは、
    password_length=password.length
    ですね。何故 puts
    と書いたのでしょうか?putsの動作を調べてください。

    キャンセル

  • 2016/03/23 21:38

    > unde ined local variable or method `passowrd_le gth" for main:Object (NameError)

    タイプミスがあると言うことですね。よく見直しましょう。
    ごく初心者の「エラーになる」の半分以上は単なるタイプミスです。

    キャンセル

  • 2016/03/24 00:47

    putsは文字列などを出力(表示)するための命令です ってあります
    puts "Progate".length
    結果7という見本があったので
    タイプミスありましたありがとうございます ちゃんとパスワードは適切な長さですとでました 

    キャンセル

0

既に回答にある通り、

password_length = puts pasword.length


だとpassword_lengthにはnilが入るかと思われます。
右辺のputsメソッドの戻り値がnilだからです。

http://ref.xaio.jp/ruby/classes/kernel/puts

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/23 16:44 編集

    /home progate/index.rb:5: Can't assign to nill
    nill =puts password .length
      ^
    nillを入れてみたら こんなのがコンソールにでました

    ulr見させてもらいましたまだ理解できる段階ではないのでごめんなさい
    わかんない言葉がいっぱいあるので調べてみます
    ありがとうございます

    キャンセル

  • 2016/03/23 17:10

    nilを入れろと言っているわけではなく、提示されたソースコードではpassword_lengthにnilが入るよと言っているだけです。(ちなみにnillではなくnilです)
    まずはputsを削除して動かしてみてください。

    キャンセル

  • 2016/03/23 19:06

    動かしてみたんですが 

    パスワードが適切な長さですと出る場面(4〜10除く数字)で 
    /home/progate/index. rb:13: in <main>' : unde ined local variable or method `passowrd_le gth" for main:Object (NameError)
    とでます

    パスワードは適切な長さですの表示がでません

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7897questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。