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

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

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

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python

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

Q&A

解決済

2回答

775閲覧

掛け算のリストを作りたい

nagi-kimura

総合スコア3

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python

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

0グッド

0クリップ

投稿2021/12/02 10:44

編集2021/12/02 12:33

Python3でリストの掛け算をしたい

Python3で標準入力から得られた値と1から9までの数字が入ったリストの掛け算のシステムを作っています。
最後の動作確認中に以下のエラーメッセージが発生しました。

回答は
4 8 12 16 20 24 28 32 36
です。
私の回答は
4 8 12 16 20 24 28 32 36
です。

発生している問題・エラーメッセージ

期待する出力と出力結果が同じに見えるのに失敗になる場合、半角スペースや改行の数が異なっていると考えられます。 余分な半角スペースや改行がないかを今一度ご確認ください。

該当のソースコード

Python3

1input_line = int(input()) # 標準入力で4が入力される 2for num in range(1, 10): # 4 8 12 16 20 24 28 32 36と出力するために開区間で範囲を指定した。 3 print(input_line * num, end=" ")

試したこと

最後にインテンド無しのprint('')を入れました。
end = ' 'のスペースを半角であることを確認して、入力をしました。

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

入力される値
入力は以下のフォーマットで与えられます。
入力値最終行の末尾に改行が1つ入ります。

n(正の整数)

期待する出力
正の整数nを1から9の数を掛けた数を半角スペース区切りで出力してください
最後は改行し、余計な文字、空行を含んではいけません。

条件
すべてのテストケースで以下の条件を満たします。

1 ≦ n ≦ 100

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

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

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

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

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

meg_

2021/12/02 10:51

> 最後の動作確認中に以下のエラーメッセージが発生しました。 Pythonのエラーメッセージではないですね。どのシステムで発生したメッセージですか? 質問タグの「リストボックス」は本質問とは関係ないので削除してください。
BeatStar

2021/12/02 12:35 編集

まず、タグ付けはちゃんとやってください。余計なものは入れないでください!!!! 他のユーザはそれぞれのタグから来ていることが多いです。なんでもかんでも入れるとそれは逆にノイズになります。私がここでC言語での説明を始めてもいいのでしょうか? C言語ならまだマシで、アセンブラとかで解説してもいいのでしょうか? そういうことをしています。 Pythonのリストとリストボックスはまったく別物です。え? 「リスト」が入っているから同じだろ? 質問者さんは「パン」と「フライパン」を同じものと見なすんですね? だって同じ『パン』が入っているから。 そういう意味不明なタグ付けになっています。質問は編集できるので編集しましょう。 (※ ちなみ私は怒ってはいません。単純に『ノイズになる情報は出さないでおくれ』と書いているだけです。まあ文面からはきつく見えるかもしれませんが)
nagi-kimura

2021/12/02 12:39

Python初心者だったので分かりませんでした。
guest

回答2

0

ベストアンサー

とりあえず、コードを読みましょう
コードを読むコツは、『一行レベルで、その行が何をしているかを考えながら読む』です。

Python

1# ユーザ入力から一つ、整数として受け取り、変数input_lineに入れる 2input_line = int(input()) 3# [1,10)の範囲でループし、変数numに入れて処理していく 4for num in range(1, 10): 5 # input_line × num をして出力! 6 print(input_line * num, end=" ")

さて、一見問題なさそうですね。でもよーく見てください。print(input_line * num, end=" ")の部分。

これはどういう意味でしょうか? 単に出力せよってこと? 違いますよね? 第二引数 end=" " は何でしょうか? そう、終端をどうするか的な意味ですね。

このコードからコメントの部分を抽出して疑似コードとしてみましょう。

[Flow.1] 1. ユーザ入力から一つ、整数として受け取り、変数input_lineに入れる 2. [1,10)の範囲でループし、変数numに入れて処理していく 2. input_line に numをかけて、その値を出力し、終端は " " (半角スペース)とする

さて、これを現実世界で、手作業でやってみてください。つまり、数学の解き方としてとか料理のレシピとしてみたいな感じでシミュレーションするのです。

たとえば、(1)で 10 という数字が入れられたとする。

すると、input_line = 10 になっているはずです。
で、(2)で [1,10)の範囲のループ。最初は1から始まる。なので num = 1 となっているはずです。

input_line = 10 num = 1

で、(2.1)に行くと、input_line * num = 10 * 1 = 10 となりますが、
終端は、半角スペースです。
わかりやすくするために、あえて 半角スペースを "_"と置き換えてみます。

すると、10_となるはずです。

で、また(2)に戻ってnum = 2となる。

input_line = 10 num = 2

となる。で、(2.1)で input_line * num = 10 * 2 = 20 となる。
だが、終端は半角スペースです。よって、10_20_となっているはずです。

…と繰り返していき、num = 9のとき、(2.1)で input_line * num = 10 * 9 = 90 となる。
だが、終端は半角スペース。
よって、10_20_30_..._80_90_となる。

で、[1,10)の範囲なのでここで終了。

ということは結果は、10_20_30_..._80_90_のようになっているはずです。途中の数字は省略していますが。

で、本来の結果と今回の結果を比較してみましょう。

本来: 10_20_30_..._80_90 今回: 10_20_30_..._80_90_

さて、何がおかしいでしょうか? そう、今回の実行結果に最後の方になんか余計なもの( "_" )が付いています。

ではどうすればいいでしょうか?

こういう場合は、「規則性を見付ける」のがいいと思います。

単純に現実世界で、ホワイトボードかなんかに10_20_30_..._80_90のように書くとき、どのように書きますか?

よーく見てください。並びが <数字><_><数字><_><数字><_>...<_><数字><_><数字>となっていますね。

で、最後以外は常に <数字><_>で一つと見なせますよね。
でも、なぜか最後だけは例外的みたいです。だって最後の<_>が無いから。

もしランダムに並んでいるのなら手も足も出ませんが、今回は『最後だけは数字で終わり、それ以外は常に後ろに半角スペースが来ている』と言えますね。

最後がいつになるのか不明(while文でループするときとか)だと厳しい感じになりそうですが、今回は[1,10)の範囲だと分かっているので、最後はnum = 9になっているはずです。

ということは、「num が 9かどうか」で分岐できると思いませんか?

「もしnum = 9なら数字のみ、それ以外なら最後に半角スペースを付ける」と。

でも、これをそのまま実装すると、if...else...みたいになるはずです。

ですが、考えてみると、「(最後以外は)常に半角スペースを後ろに付ける」と言えますよね?

つまり、「もしnum ≠ 9なら最後に半角スペースを付ける」と言えますよね?
それで考えると、num = 9 の場合、num≠9を満たさないので処理されない。つまり最後の半角スペースが付かないのです。

そういう風に言い換えてみたり、規則性を見付けるとやりやすいはずです。

それと、プログラミングをするのなら、『デバッグぐらいはしましょう』です。
やり方は環境とか言語とかによるので書きませんが、発想は上記にあるようなコードを読むアレと一緒です。
単にデバッガを使うのか、IDE側のデバッガを使うのか、いわゆるprintfデバッグ(Pythonだとprint)でうやるのかの違いだけです。

投稿2021/12/02 12:23

BeatStar

総合スコア4958

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

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

nagi-kimura

2021/12/02 12:47

デバッグという言葉を初めて聞いたので調べます!デバッガという言葉も初めて聞いたので調べます!IDE(イデ?)も調べますね!プログラミングって大変難しいんですね。難しいことが分かったのでありがとうございます。
guest

0

回答は

"4 8 12 16 20 24 28 32 36\n"

なのに対して、あなたの回答は

"4 8 12 16 20 24 28 32 36 "

だから間違っていると言われています。

それを修正しましょう。

投稿2021/12/02 10:57

ppaul

総合スコア24666

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

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

nagi-kimura

2021/12/02 12:41

\n.....初めて見ました。初見なので、調べます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問