前提・実現したいこと
はじめまして、python 3の初心者です。
標準入力された値に、2から30までの整数をかけて値を
数字の間に半角スペースを入れ、最後のスペースは外して、
出力したいのですが、おもったようにいきません。
以下のコードを試しました。
初歩的で恐縮ですが、どなたか御指南いただけないでしょうか?
宜しくお願いします。
num=input()
for i in range(2,30):
result=int(num)*i
print(result,end="")
<出力値>
812162024283236404448525660646872768084889296100104108112116
発生している問題・エラーメッセージ
該当のソースコード
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
最適解は出てると思いますが別解ということでご参考までに。
多分何かの問題だと思われますが、今回は最後だけ空白無しという条件でしたがこういう方法も知っていると使える場面もあるかと。
また、入力も便利な方法があるので困った時には参考にしてみてください。
プログラミング(競プロ)に便利な Python3 用法集 入力編
python
1num = int(input()) 2for i in range(2, 31): 3 result = num * i 4 if i < 30: 5 print(result, end = " ") 6 else: 7 print(result, end = "") 8
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120
投稿2018/10/10 11:54
総合スコア1009
0
python3
1File Edit Options Buffers Tools Python Help 2num = int(input()) 3 4ans = "" 5for i in range(2, 31): 6 ans += " " + str(i + num) 7 8print("[" + ans[1:] + "]")
[ ] で囲ってだしてますが、これを外せば要求に沿ったものになります。
SPACE + 計算結果 を次々と連結していき、最後に 先頭の SPACE より後ろを print しています。
計算結果 + SPACE を次々と連結していき、最後に 末尾 SPACE より前を print するという方法でも可能です。
投稿2018/10/10 12:26
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Pythonなど不要。そう、シェル芸ならね!
bash
1$ echo 4|(read n;echo $n*{2..30})|xargs -I@ -n1 sh -c 'echo $((@))'|xargs 28 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120
投稿2018/10/10 11:51
総合スコア5737
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まず、num = input()
だとnumが文字列になってしまうので、初めから
num = int(input())
にするのがいいと思います。ここに2から30までの整数をかけて行くわけですね。
次にrange(2,30)だと、2から29までの整数になってしまいます。range(2,31)にしましょう。range(m,n)はm以上n未満という感じです。
変な仕様にも思いますが、n - mというのが何回forを回るのかということに対応しているというメリットがあります。2以上30以下の整数は29個ですが、これが31 - 2に対応しています。
for文の中の変数がnumからvalueに変わっているような気がしますが、写し間違いですかね?numにiをかけて行くので、num = num*iとか、num *= iとかすれば良いと思います。
最後にnumの値を、各桁の間にスペースを入れて出力するとのことですが、方法はいろいろですが、とりあえず文字列に変換して見ます。
num = str(num)
スペースを挿入して行くために、これをリストにしましょう
num = list(str)
こうすると例えばもしnum = 1235だったら、num = ['1', '2', '3', '5']になります。
最後にこれらの数字を半角スペースを挟みつつくっつけて行きます。これはpythonでは' '.join(リスト)として実行できます。
以上をまとめると最後の出力では、
python
1print(' '.join(list(str(num))))
とすれば良いでしょう。
投稿2018/10/10 11:41
総合スコア122
0
ベストアンサー
『4』を入力されたのですね。
数字の間に半角スペースを入れ、最後のスペースは外して、出力したい
リストを作って、最後にどびゃっと出力するのが楽です。
Python
1num = int(input()) 2 3dst = [] 4for i in range(2, 31): # rangeは start以上stop未満 を返す 5 dst.append(num * i) 6 7print(*dst)
実行結果 Wandbox
8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120
コードの書き方について
teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。
投稿2018/10/10 11:28
編集2018/10/10 11:31総合スコア35658
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/10 11:40
2018/10/10 11:52
2018/10/10 12:00
2018/10/10 12:11
2018/10/10 12:16 編集
2018/10/10 12:28
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/10 11:58