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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2843閲覧

練習問題が解けません。。

izumiw

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/03/16 04:48

こんにちわ。独学で勉強しているものです。練習問題につまずいているのでご教授いただきたいです。

ここに質問の内容を詳しく書いてください。

問題(2)
input()を用いて整数を入力し、0以外ならば再度整数を入力できる、
0のときは「処理終了」という文字列を出力し、処理を終了させるプログラムを
作成しなさい。

問題(2)の出力例
1
3
4
5
67
8
6543
4
333
78
23
4
0
処理終了

試したこと

繰り返し処理のwhile文を使うのかイメージしたのですが解けません。。。input関数を使ってどういうコードを書いたらいいのでしょうか?宜しくお願いします。

補足情報(FW/ツールのバージョンなど)

Python3 です。

よろしくおねがいします。

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

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

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

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

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

m.ts10806

2018/03/16 04:50

うまくいっていなくて未完成でも結構ですので現在書いているコードをご提示ください。参考にしたサイトがあれば、それも。
m.ts10806

2018/03/16 04:59

既に1つ後の質問で指摘されていますが、コードをまず書きましょう。参考にした先があるならなおさらです。丸投げ質問では回答は臨めません。 https://teratail.com/help/question-tips#questionTips1-2 [>調べてみた結果を実際に試してみましょう。]
LouiS0616

2018/03/16 05:02

while文の使い方をほとんどそのまま問うているような問題に見えます。while文自体の使い方を再確認してみてはいかがでしょうか。
izumiw

2018/03/16 05:04

ありがとうございます!確認してみます!
guest

回答3

0

ベストアンサー

あきらめないように、考え方のコツを。

問題文

input()を用いて整数を入力し、0以外ならば再度整数を入力できる、

0のときは「処理終了」という文字列を出力し、処理を終了させるプログラムを
作成しなさい。

この問題文は長いので、以下のように要素に分割します。

問題文の理解

  • 指示されていること:プログラムを作成
  • 「する」こと:入力、出力、終了

そして、分割したら以下のような簡単なプログラムを頭の中に描きます。

python

1x = input() # プログラムに入力する方法、「Python 入力」でググる 2print(x) # プログラムから出力する方法、「Python 出力」でググる 3 4# 特に何もしなくてもプログラムは終わりに達すると終了する

その次は、実際に上記のプログラムを動かしてみます。これが動かせないうちはこれ以降に進むべきではありません。そして動かせたら、問題文に戻ってできる事を探し、順番にプログラムに付け足していきます。

「input()を用いて整数を入力し」を追加 -> 必ず動かしてみて期待通りになるか確認する。

python

1x = input() 2print(x) 3 4# なにも変えなくてOK。人が0~9だけを入力するように気をつけるだけ。

「「処理終了」という文字列を出力し」を追加 -> 必ず動かしてみて期待通りになるか確認する。

python

1x = input() 2print("処理終了")

ここまで出来たら、問題文に立ち戻って、どこまで達成できているのか確認します。

問題文の達成具合

input()を用いて整数を入力し、0以外ならば再度整数を入力できる、

0のときは~~「処理終了」という文字列を出力し、処理を終了させるプログラムを
作成しなさい。~~

そしてまた簡単そうなところから付け足していきます。

「0のときは」を追加 -> 必ず動かしてみて期待通りになるか確認する。

python

1x = input() 2if x == '0': # 多分ここでつまづく。数値の0ではなく文字列の'0'を条件に指定しないといけない。ググる and/or 聞く。 3 print("処理終了")

「0以外ならば再度整数を入力できる」を追加 -> 必ず動かしてみて期待通りになるか確認する。

python

1x = input() 2if x == '0': 3 print("処理終了") 4if x != '0': # elseを使っても良い。 5 x = input()

そして、問題文で指示されていることが一応全部追加できたら、問題文を振り返ります。

問題文

input()を用いて整数を入力し、0以外ならば再度整数を入力できる、

0のときは「処理終了」という文字列を出力し、処理を終了させるプログラムを
作成しなさい。

python

1x = input() 2if x == '0': 3 print("処理終了") 4if x != '0': 5 x = input()

プログラムはこれで完成していますね。おそらく出題者にはwhileでの繰り返し処理を実装をさせる意図があるのでしょうが、そうであれば「再度」ではなく「何回でも」と記するべきです。ここまでで終わりにするのか、ここからあなたが人間的に出題者の出力例から意図を汲み取ってwhileを使った「何回でも」という機能を実現するのかは、アナタ次第です。頑張ってください。

投稿2018/03/16 08:30

YouheiSakurai

総合スコア6142

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

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

izumiw

2018/03/16 08:38

ご丁寧にありがとうございます。 基礎がまだ終わってないんですが問題を出されてググりながらやってるところで困ってました。 繰り返し拝見しながら進めていきます。ありがとうございました。
YouheiSakurai

2018/03/16 08:41

足元がぐらついた状態で上位の事ができるようになる事は無いので、最初の基本処理(入力・出力・条件分岐)をしっかりと理解してから先に進むことをお勧めします。
guest

0

参考にしたサイトにほぼそのままのサンプルがあります。

Python

1while True: 2 ans = input("You: ") 3 if ans == "q": 4 break 5 print(ans)

これを参考にして何のイメージも湧かないとしたら、プログラミングには全く向いていませんのであきらめて他のことをするのがいいでしょう。

投稿2018/03/16 05:53

Zuishin

総合スコア28660

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

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

izumiw

2018/03/16 05:55

あきらめます。
guest

0

よく使う常套句ですが、while True:で処理を何度も継続させることができます。ここから抜けるには、breakを使います。(aが0なら)の部分は穴埋め問題です。適当なコードに置き換えてお試しくだされ。

python

1while True: 2 a = input(">>> ") 3 a = int(a) 4 if (aが0なら): 5 break 6 else: 7 print(a) 8 9print("処理終了")

さて、やりたいことは見えてきましたかな。

投稿2018/03/16 05:39

編集2018/03/16 08:47
tachikoma

総合スコア3601

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

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

izumiw

2018/03/16 05:57

ようやく見えてきました。いまさらフローチャート作ることを知りました。ありがとうございました。
tachikoma

2018/03/16 06:04

紙とペンが悪いとは言いませんが、やっぱし動くものを作るほうが楽しいと思いますけどねっ。ただ、どれかひとつのプログラミング言語をじっくり取り組んでみて、出来ること/出来ないことを何となくつかめるようになるといいですね。
izumiw

2018/03/16 06:07

初めて二週間で手探りですが非常に参考になります。ありがとうございます。
izumiw

2018/03/16 07:55

コードつくってみました。 while True: a = int(input(1)) if a >= 0: break else: print("処理終了") これで実行すると数字の 1 しか でてきません。何が足りないのでしょうか?
KazuhiroHatano

2018/03/16 08:21

うむ、インデントがないとpythonのコードはさっぱりだけど それでもわかる、色々わかってない感 「処理を追う」ということができてない感じ コードがどういう順番でどう処理されていくかの想像力を 身につけるところからじゃないかなぁ 問題を解くよりwhileとかforとか使って色々実験して 感覚を身につける方がいいかも 「こうしたらこうなるはずだ」 ということを考えて実際そうなるかの確認の積み重ね わざと失敗させて想定通りの失敗が 起きるかどうかを確かめるのもあり 多分手順とかなんとかよりも「処理を追う」感覚を まず身につけないといけない気がします
tachikoma

2018/03/16 08:38

input(1)の"1"とはなんぞ?
tachikoma

2018/03/16 08:49

ちょっとコードが足りなくなってますな。"数字"と書いたのがよくなかったかな。サンプルコードを書き直したので、そちらで再スタートしてみてくだされ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問