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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

612閲覧

paizaのハッカソンで遊んでて分からない所あったので正解と解説下さいオナシャス

alcot

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/01/30 13:03

前提・実現したいこと

paizaのゲームで遊んでいるのですが色々なサイトを見ても分かりません。
エラーメッセージはmapだからintじゃないと言ってるんだと思いますが
標準入力から受け取った値をintにするにはこうするべきと書いてました
https://qiita.com/odashun1015/items/57945df5dc974dc7b80a
やりたい事は要するに100マス計算の横がcで、縦がrで、どの位縦と横が長いかがNです
それが標準入力されるので100マス計算の様に出力しましょうという事です
期待する値

例1
入力
3
1 2 3
4 6 8

出力
5 6 7
7 8 9
9 10 11

例2
入力
5
8 7 6 5 4
1 2 3 4 5

出力
9 8 7 6 5
10 9 8 7 6
11 10 9 8 7
12 11 10 9 8
13 12 11 10 9
入力される値
入力は標準入力にて以下のフォーマットで与えられます。

N
c_1 c_2 ... c_N
r_1 r_2 ... r_N

・1 行目に、表の行と列の数を表す整数 N が与えられます。
・2 行目に、N 個の整数が半角スペース区切りで与えられます。
この i 番目 (1 ≦ i ≦ N) の整数 c_i は i 列目に書かれている整数を表します。
・3 行目に、N 個の整数が半角スペース区切りで与えられます。
この i 番目 (1 ≦ i ≦ N) の整数 r_i は i 行目に書かれている整数を表します。
・入力は合計 3 行であり、 最終行の末尾に改行が1つ入ります。

条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ N ≦ 50
・各 i (1 ≦ i ≦ N) に対し、以下を満たします
・0 ≦ c_i ≦ 1,000
・0 ≦ r_i ≦ 1,000

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

エラーメッセージ
Traceback (most recent call last):
File "Main.py", line 8, in <module>
for i in range(input_lines):
TypeError: 'map' object cannot be interpreted as an integer

該当のソースコード

使用している言語python
input_lines = map(int,input().split())
input_c=map(int,input().split())
input_r=map(int,input().split())
for i in range(input_lines):
print(input_c+input_r[i])

試したこと

これもしてみました
input_lines = int(input())
input_c=list(map(int,input().split()))
input_r=list(map(int,input().split()))
for i in range(input_lines):
A=map(lambda x: x+input_r[i],input_c)
print(A)

出力結果<map object at 0x7fecbb202828>

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

LouiS0616

2018/01/30 13:19

リンク先『複数行に数値を入力する場合』を参考にすれば解決するんじゃないですかね。
guest

回答2

0

mapを正しく使うとこうなります。

python

1from itertools import repeat 2from operator import add 3 4input() # skip 5seed = [*map(int, input().split())] 6for r in map(int, input().split()): 7 print(*map(add, seed, repeat(r)))

投稿2018/01/30 15:22

YouheiSakurai

総合スコア6142

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

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

namnium1125

2018/01/30 15:35

考えてみればmapオブジェクトもアンパックできましたね。すっかり頭から抜けてました(^ ^;
YouheiSakurai

2018/01/30 15:40

すいません。namniumさんが書いた内容を正しくないという意図は全くなかったです。もしも誤解を招いていたら申し訳ありません。ただただ、mapをいかにより良く使うかだけを考えて一番正しいと思った方法を書いただけです。重ねて申し訳ありません。
namnium1125

2018/01/30 15:51

いえいえ純粋に勉強になるいいコードだと思っただけです! いいコードは評価されるべき、当然です。 コメントした意図は純粋に質問者様に「こちらの回答の方がいいですよ」というのを伝えるためです。 こちらこそ勘違いさせてしまったのかも…すみません(^ ^;
YouheiSakurai

2018/01/30 15:52

誤解がなかったのであれば良かったです。ありがとうございます。お騒がせしました。
guest

0

ベストアンサー

ハッカソンはやったことないんですけど、paizaの規約違反に当たらないでしょうか?

まぁ、そこには目をつぶるとして、(次やったら…わかりますね?)

2つ目のコード、効率云々は抜きとすると、すんごく惜しいところまで来ています。

大ヒントとしては、mapオブジェクトなのがいけないわけですから、別な型に変換(キャスト)すればいいわけです。

コード中で使用しておられるので、ご存知かとは思いますが、pythonにおいてキャストは

python

1型名(キャスト対象)

ですね。

そしてもう一つ大ヒント。

print関数にlistオブジェクトを渡すといい感じで出力してくれます。

ここまで言ってしまったのでおまけもつけてしまいましょう!!

python

1print(*listオブジェクト)

このように書くといいことあるかも…?

投稿2018/01/30 13:24

編集2018/01/30 14:28
namnium1125

総合スコア2043

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

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

alcot

2018/01/30 16:09

ありがとうございます!おかげさまで解けました *正解コード input_lines = int(input()) input_c=list(map(int,input().split())) input_r=list(map(int,input().split())) for i in range(input_lines): A=list(map(lambda x: x+input_r[i],input_c)) print(' '.join(map(str, A))) あと規約違反ではないかとのコメントを頂きしっかり読み直させて頂きました。 するとコンテンツ別に違反が違っておりオンラインゲームサービスで回答を求める事は規約違反では無いそうです。 今後もなるべく自分で解く努力はしますがどうしても分からない場合はこうしてヒントを求めます。
namnium1125

2018/01/30 16:14

まぁ、規約違反ではないにしろ今回みたいな質問の仕方をすると低評価の嵐になってしまうので、ピンポイントにわからないことだけを聞くことを心がけるといいと思います。 ヒントを求めるのは全然いいことだと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問