HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0906
TSU計算できません  の続きなんですけど・・・19解決


TSU

リンク

2011/9/6(Tue) 20:18:49|NO.41118


cls pos 219,150 keisan = "" input keisan,200,20 pos 285,173 button "計算する" ,*kesan stop *kesan cls repeat ;ここなんです x= keisan y=100/x mes y*(cnt+1) loop stop

repeat回数をx回にしたいんですけど、
repeatの横にxを書くと反応しないんです。

どうしてなのかわかりませんか?



この記事に返信する


ぬこ

リンク

2011/9/6(Tue) 20:22:32|NO.41119

repeatより前にはxがないからです。
あとkeisanは文字列なのでそのままxに代入するとxは文字列になってしまいます。



TSU

リンク

2011/9/6(Tue) 20:39:58|NO.41120

repeatより前にはxがないから
というのは理解いたしました


keisanは文字列なのでそのままxに代入するとxは文字列になってしまいます。
↑↑
どう対処したらいいのでしょうか?



てれてれ

リンク

2011/9/6(Tue) 20:40:16|NO.41121

前の質問での皆様の回答の内容を何1つ理解してないであろうことを理解しました。



TSU

リンク

2011/9/6(Tue) 20:54:25|NO.41122

そうですか??
指摘された点はすべて改善したつもりなのですけど

どこが間違ってますか?



ORZ

リンク

2011/9/6(Tue) 20:55:04|NO.41123

>k5342
間違い。正しくはx=int(keisan)
プログラミングには、1という数字と、"1"という文字列の二通りが存在する。
これはHSPがその二つを明確にわけなくてもホイホイ組めてしまうという簡便さの裏返しで
まったくわかんねー初心者には使いわけの難しい概念と言える。

しかし、HSPのせいにして甘えるのは間違い。
重要なのは人に聞くことではなく自分で調べる根性だ。君が世界最強クラスの独創性を持っているなら
ひょっとしたら当てはまらないかもしれないが、普通初心者がつまづくような小石なんぞ何十人と
躓いているわけで、ネット上に資料が無いわけが無い。
inputを出したい気持ちはわかるが、まずは基礎をやり直すことと、調べる事の重要さを覚えんさい。



k5342

リンク

2011/9/6(Tue) 21:02:33|NO.41124

またおんなじミスを繰り返して欲しくないので。

【復習 - ORZさんの書き込みより】2011/9/5(Mon) 18:45:49 NO.41106

>>x= "ke_san"
>>これはke_sanという文字列をxに代入する処理です
>>
>>x=ke_san
>>これは、ke_sanという変数をxに代入する処理です
>>
>>以上

計算というのは数字と数字を足したり引いたりかけたり割ったり...ですよねえ?
単純に表すと、 X+YとかX-YとかX*YとかX/Yとか...のように表せるはずです。

んで、変数の扱い方は種類があるんですが、その種類は中に入る情報そのもので決まったり決めたりします。

まあ、今回扱う種類は二種類なんですが、

【文字列型】 - その名の通り、変数を文字列にします。0123456789以外にも文字列を代入できます。
【数値型】 - 中身に入るデータは数字(0123456789)のみです。

この2つに決定的な違いは、(以下、変数Xを用いて例を示す)以下の例を実行したときに

X=X+1
111111とXの文章に1がたされるのが文字列型です。
それと違って2,3,4,5,6...と数字が1ずつ増えるのが数値型になります。

では、どうやってその変数を作るか。

【文字列型】 - x="" を最初に代入してやる or x=str(x)
【数値型】 - x=0 を最初に代入してやる or x=int(x)

上のようにします。

では話を最初に戻します。

最初のスクリプトを見てください。
その変数はどっちが代入されていますか?
もしくは str/int命令がありますか?

以上。



k5342

リンク

2011/9/6(Tue) 21:03:57|NO.41125

>>No.41123
>>ORZさん

ア...折角の返信...申し訳ないです...!
書きなおしてしまいました...!

本当にすいません...!



とおりすがり

リンク

2011/9/6(Tue) 21:11:27|NO.41126

言おうと思った事を全部ORZさんに言われてしまいましたが、ひとつ付け加えます。

HSPアシスタントを起動して、Sampleを見てみてください。
「new」というフォルダの中に「clacsheet」というサンプルがあります。
「calcsheet」をクリックして「edit」ボタンを押すとスクリプトが見られます。
TSUさんの参考になると思います。

SampleにはHSPで出来る事のヒントが詰まってますから、目を通してみるといいと思います。
将来「こんなことがやりたい、どうやったらいいのかな?」と思ったときに
「そういやサンプルにあったよな」という感じに、役に立ちますよ。



ザーメン

リンク

2011/9/6(Tue) 21:28:00|NO.41127

"文字"と"数字"の1は違うものです。


数字の1だと・・・


1 + 1 = 2 になる

しかし文字の1だと・・・


"1" + "1" = "11" になります。



TSU

リンク

2011/9/6(Tue) 21:36:37|NO.41128

もしかして

keisan
が文字列型になっているから
x
も文字列型になっている

だから、反応しないんだということですかね


間違ってたら
一から勉強しなおします



てれてれ

リンク

2011/9/6(Tue) 21:46:38|NO.41129

そもそもループになってない


x = 0 repeat x mes "そもそもループになってない" loop ;上のスクリプトはこれと同じ repeat 0 mes "そもそもループになってない" loop



TSU

リンク

2011/9/6(Tue) 21:53:00|NO.41130

Xには数字を入れたいんです。
inputのところで入力した数字を



ザーメン

リンク

2011/9/6(Tue) 21:59:54|NO.41131

repeatの前に
x = int(keisan)
でokなはず。



れみはる

リンク

2011/9/6(Tue) 22:30:13|NO.41135

HSPの変数には、
基本的に数値型と文字列型があります。(他にもありますが省略)

x = 1 とすると数値
x = "1" とすると文字列として処理されるのはもうわかってもらえたと思います。

keisan = "" とすると、keisanは文字列型の空の変数になります。
たとえば、inputで「10」と入力すると、keisan = "10"になります。文字列です。
これを数値型に変換してやる必要があります。
そのための関数が「int()」です。
括弧内に変換する変数を指定します。
x = int(keisan) といった具合にです。
pos 219,150
keisan = "" input keisan,200,20 pos 285,173 button "計算する" ,*kesan stop *kesan cls x = int(keisan) repeat x y=100/x mes y*(cnt+1) loop stop



ORZ

リンク

2011/9/6(Tue) 22:32:48|NO.41137

この、同じ答えをいろんな人間がちょっとずつ文章を足したり消したりしながら書くいつもの風潮は
よくないと思うんだが。これまともな質問者は全部読むんだぜ?



ザーメン

リンク

2011/9/7(Wed) 03:37:23|NO.41164

普通は全部目を通すべきです。



TSU

リンク

2011/9/7(Wed) 19:00:39|NO.41183

あ、なるほど!!
わかりましたよ


そして反省します



TSU

リンク

2011/9/7(Wed) 19:55:43|NO.41190

ありがとうございました



backdrop

リンク

2011/9/7(Wed) 20:29:30|NO.41194

>これまともな質問者は全部読むんだぜ?

理解した程度で最後に飛ばして

「わかりました!ありがとうございます!」

と書き込むのが本当にまともな質問者です。
質問者の皆さん、この掲示板を賢く使いましょう。
そして掲示板のルールとネチケットも忘れずに。

…やはり何かずれていて申し訳ない。
毎回ご迷惑をおかけしております。



ONION software Copyright 1997-2021(c) All rights reserved.