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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

解決済

3回答

1534閲覧

ruby 基礎  条件分岐

xxx

総合スコア21

Ruby

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

0グッド

0クリップ

投稿2016/03/23 06:08

編集2016/03/23 07:15

![イメージ説明

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

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

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

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

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

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

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

この問題はprogateにあります

Ruby

1コードputs "パスワードを入力してください" 2password = gets.chomp 3 4# 変数password_lengthにpasswordの文字数を代入してください 5password_length = puts password.length 6 7# password_lengthが0でない場合に"パスワードが入力されました"とputsしてください 8unless password_length==0 9puts "パスワードが入力されました" 10end 11 12# password_lengthが4文字以上10文字以下の場合に"パスワードは適切な長さです" とputsしてください 13 if password_length>=4&&passowrd_length<=10 14 puts "パスワードは適切な長さです" 15 end

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

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

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

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

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

guest

回答3

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 08:06

ozwk

総合スコア13521

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

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

xxx

2016/03/23 10: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を除いた数)だけでます パスワードが適切な長さですの表示が以前出ません
ozwk

2016/03/23 13:43

スペル間違えてますよ
xxx

2016/03/23 15:49 編集

puts password.lengthだと passwordの長さではなくてpassword.lengthという文字を画面に出力するということですね? というわけでその書き方だと、password.lengthにはnilが入ります。のところ他の回答者を正解とするとpassword_lengthの間違いですね  nilはまだ?です  確かに間違えてました ちゃんと動きました ありがとうございます
guest

0

既に回答にある通り、

ruby

1password_length = puts pasword.length

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

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

投稿2016/03/23 07:30

k.tada

総合スコア1679

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

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

xxx

2016/03/23 07:44 編集

/home progate/index.rb:5: Can't assign to nill nill =puts password .length   ^ nillを入れてみたら こんなのがコンソールにでました ulr見させてもらいましたまだ理解できる段階ではないのでごめんなさい わかんない言葉がいっぱいあるので調べてみます ありがとうございます
k.tada

2016/03/23 08:10

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

2016/03/23 10:06

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

0

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

Ruby

1password_length = puts pasword.length

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

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

投稿2016/03/23 06:33

otn

総合スコア84499

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

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

xxx

2016/03/23 07:10 編集

password_length=puts password.length  は passwordを入力した時に その文字数がわかる動作を期待してます nilはまだ習ってないのでまだ出てきてないので違うと思います 画像のほうが楽だったのですいません
otn

2016/03/23 12:36

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

2016/03/23 12:38

> unde ined local variable or method `passowrd_le gth" for main:Object (NameError) タイプミスがあると言うことですね。よく見直しましょう。 ごく初心者の「エラーになる」の半分以上は単なるタイプミスです。
xxx

2016/03/23 15:47

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問