不動産を学ぼう!
不動産テック

【不動産ビッグデータ】
不動産データ分析のためのPython!問題ノック!(超初級編)

この記事で解決できること

・不動産ビッグデータ分析に必要なPython知識を得られる
・より実践的な練習問題を経験し、実務に慣れることができる

シマ
シマ
皆さん、こんにちは。シマです(@fudousan_jisho)。この記事では、不動産データ分析のためのPythonについて、練習問題(超初級編)を記載します。問題は少しずつ追加していきます!

練習問題を解く前に、基礎文法について確認したい方は以下のページをご確認ください。

【不動産ビッグデータ】
不動産データ分析のためのPython基礎文法、総まとめ集!ビッグデータを持つ不動産業界に活かせるコード!不動産テックに興味ある方に見てほしい!
不動産業界には、様々なビッグデータが眠っています。 ただ、他の業界に比べるとまだまだアナログなやり方が残っています。 ...

一緒にがんばっていきましょう!!!

目次
  1. 顧客へのグッズ数を計算する
  2. 不動産総額の計算する
  3. ゾロ目に契約日を設定する
  4. 乗数か否か判定する
  5. 顧客へのメール文を装飾する
  6. エリアごとにコード名を付ける
  7. 売買金額の桁数を調べる
  8. エリア名の小文字を大文字にする
  9. 販売マンションの平均単価を計算する
  10. 売買代金を大きな単位で見る
  11. 不動産・資産運用関連の用語を縦に並べる
  12. 契約日までの週数(余りは残日数)を確認する
  13. 顧客や担当者の名前をイニシャル化する
  14. 専門用語の文字を逆にする
  15. 建築年の和暦を西暦に変更する
  16. 専門用語の同じ文字の個数を数える
  17. @が上手く入力できない顧客のアドレス変更
  18. マーケット感のアンケート調査
  19. 契約獲得で従業員への臨時ボーナスを均等配分
  20. 手数料に上限を設けて顧客へアピール
  21. 12進数を10進数に表示変更する
  22. 売買代金で物件を場合分けする
  23. 売買代金が最も大きい案件を採用する
  24. 一週間の契約がある日を調べる
  25. 不動産用語内の特定の文字を見つける
  26. 創業から9年目までの売上目標を立てる
  27. 縦の文字をくっつける
  28. 売買代金が最大・最小の案件をピックアップする
  29. 不動産仲介が売り側案件と買い側案件を数える
  30. 任意の数の物件の売買代金を合計する
  31. 営業担当員の数を調整する
  32. 1週間の経費が予算内か否かを調べる
  33. 実績管理票の文字を読み取り出力する
  34. 顧客アンケートにつき、必要な箇所だけ抽出する
  35. 売上が低い日のみ抽出する
  36. 契約書の文言修正
  37. マンション派か戸建派かを調べて、結論を出す
  38. 不動産手数料の端数(下二桁)をディスカウントする
  39. 専門用語や専門機関の略語を表示する
  40. 数字と文字を分離して表示し、管理を容易にする
  41. 足りないプロジェクトファイルを調査する
  42. 成約した月が一定数以上の従業員に臨時ボーナスの支給を検討する
  43. キャッチフレーズ広告の横の長さを決める
  44. 特定の文字を削除する
  45. 売買物件単価と見込み最小販売額から、最低売上を求める
  46. 売買代金が大きい方を選択、もしくは同額ならそれを記載する
  47. 縦に並べられた用語や文章を結合する
  48. 特定の番目の文字を削除する

顧客へのグッズ数を計算する

【問題文】

顧客へのグッズ数を計算する。

【標準入力】

N(N:記念品の箱数、一箱は1ダース12個入)

【回答例】

N = int(input())
print(N * 12)

不動産総額の計算する

【問題文】

不動産総額を計算する。

【標準入力】

a n(a:不動産の価格、n:戸数)

【回答例】

s = input().split(" ")
print(int(s[0])*int(s))

ゾロ目に契約日を設定する

【問題文】

契約日が月と日のゾロ目ならYes、そうでなければNoと表示。
(例、5月5日→Yes、1月11日→Yes、11月1日→Yes、10月16日→No)

【標準入力】

m d(m:月、d:日)

【回答例1】

date = input().split(" ")
month = date[0]
day = date

if all(x==month[0] for x in month) and all(y==month[0] for y in day):
    print("Yes")
else:
    print("No")

【回答例2】

date = input().split(" ")
month = date[0]
day = date
nums = month + day

if all(x==nums[0] for x in nums):
    print("Yes")
else:
    print("No")

乗数か否か判定する

【問題文】

入力数値が2の乗数が否かを判定

【標準入力】

n(入力値)

【回答例1】

n = int(input())
if n & (n-1) == 0:
    print("OK")
else:
    print("NO")

【回答例2】

x = int(input())
i = x
while True:
    if i % 2 == 0:
        i = int(i/2)
        if i == 1:
            print("OK")
            break
    else:
        print("NG")
        break

顧客へのメール文を装飾する

【問題文】

書いた単語の周りを「+」で囲む

【標準入力】

word(記載した言葉)

【回答例】

word = input()

word_len = len(word)

print("+" * (word_len + 2))
print("+" + word + "+")
print("+" * (word_len + 2))

エリアごとにコード名を付ける

【問題文】

物件管理を容易にするため、エリアのローマ字先頭3文字をコード名とする。
(例、東京TOKYO→TOK、大阪OSAKA→OSA)

【標準入力】

name(エリアのローマ字小文字)

【回答例】

name = input()
a = name[0]
b = name
c = name
print(a + b + c)

売買金額の桁数を調べる

【問題文】

売買金額の桁数を調べる。

【標準入力】

n(売買代金)

【回答例】

n = input()
print(len(n))

エリア名の小文字を大文字にする

【問題文】

エリア名の小文字を大文字にする

【標準入力】

s(エリア名の小文字)

【回答例】

s = input()
print(str.upper(s))

販売マンションの平均単価を計算する

【問題文】

マンションを複数戸販売した際の、戸あたり平均価格(単位:万円、小数点以下切り捨て)

【標準入力】

N M(N:販売合計金額、M:販売戸数)

【回答例】

price = input().split(" ")
N = price[0]
M = price
print(int(N) // int(M))

売買代金を大きな単位で見る

【問題文】

売買代金を見やすくできるよう、百万円単位(それ以下は切り捨て)表示に変更。
(例、123456789円であれば、123百万円)

【標準入力】

price(売買代金)
digit(表示したいケタ数)

【回答例】

price = input()
digit = input()
print(price[0:int(digit)])

不動産・資産運用関連の用語を縦に並べる

【問題文】

用語を縦に並べる。
(例、Fudousanであれば、それを一文字ずつ縦表示に)

【標準入力】

Fudousan

【回答例】

S = input()
for i in range(len(S)):
    print(S[i])

契約日までの週数(余りは残日数)を確認する

【問題文】

契約日までの週数(あまりがあれば残りの日数)を確認する。
(例、40日であれば、40÷7=5あまり5、つまり5週と5日)

【標準入力】

m n
(mは残りの日数、nは7日間)

【回答例】

calc = input().split(" ")
m = calc[0]
n = calc
week = int(m) // int(n)
day = int(m) % int(n)
print(week, day)

顧客や担当者の名前をイニシャル化する

【問題文】

顧客や担当者の名前をイニシャル化する。
(例、Nihon Taroであれば、N.T)

【標準入力】

last_name first_name

【回答例】

name = input().split(" ")
last_name = name[0]
first_name = name
print(last_name[0] + "." + first_name[0])

専門用語の文字を逆にする

【問題文】

入力した文字を反転させる
(例、もしnasuoduFなら、Fudousanに)

【回答例】

word = input()
print(word[::-1])

建築年の和暦を西暦に変更する

【問題文】

建築年の和暦を西暦に変更する。但し、昭和か平成か両方の可能性を考える。

【標準入力】

Showa(もしくはHeisei)
year(和暦の数字)

【回答例】

wareki = input()
year = input()
if wareki == "Showa":
    print(1926 + int(year) -1)
else:
    print(1989 + int(year) -1)

専門用語の同じ文字の個数を数える

【問題文】

専門用語の同じ文字の個数を数える
(例、FudousanToushiで、"u"なら3個)

【標準入力】

FudousanToushi

【回答例】

word = input()
print(word.count("u"))

@が上手く入力できない顧客のアドレス変更

【問題文】

利用端末により@が上手く入力できない顧客のメルアド変更を実施する。
(例、fudousan-jisho at xxx.comと入力された場合には、fudousan-jisho@xxx.comへ変更)

【標準入力】

fudousan-jishoatxxx.com

【回答例】

mail = input()
mail1 = mail.replace("at", "@")
print(mail1)

マーケット感のアンケート調査

【問題文】

不動産業界の大手デベロッパー7社の社長へアンケート調査。
景気が良い場合には「1」、景気が悪い場合には「0」とし、5以上で「1」なら景気が良いと判断。

【標準入力】

1, 0, 1, 1, 1, 0, 1

【回答例】

keiki = input().split(" ")
if keiki.count("1") >= 5:
    print("景気良い")
else:
    print("景気良くない")

契約獲得で従業員への臨時ボーナスを均等配分

【問題文】

成約により100万円の利益が出たため、p人の従業員で均等割りすることとした。
もし余りが出てしまえば、均等割りになるよう、社長がさらに追加拠出し、全員にプラス1万円となるようにする。
p人の場合、一人いくらの臨時ボーナスをもらえるか?

【標準入力】

p = 13

【回答例】

p = int(input())
if int(24 % p) == 0:
    print(int(24/p))
else:
    print(int(24/) + 1)

手数料に上限を設けて顧客へアピール

【問題文】

2人の顧客に対し、手数料を提案。仲介の規定手数料は一般的に売買代金×3%。
但し、当該顧客と継続的な関係を築きたいため、ディスカウントを検討。
売買代金により規定手数料は上下するが、もし5百万以下ならその金額通り、もし5百万を超えるようなら5百万円で提案予定。

fee = input().split(" ")
client1 = int(fee[0])
client2 = int(fee)

print(min(5, int(client1)) + min(5, int(client2)))

12進数を10進数に表示変更する

【問題文】

12進数を10進数表示に変更する。
(12進数は、0、1、2、3、4、5、6、7、8、9、A、B)

【標準入力】

s

【回答例】

s = input()
if s == "A":
    print(10)
elif s == "B":
    print(11)
else:
    print(s)

売買代金で物件を場合分けする

【問題文】

売買代金が100億以上(つまり11ケタ以上)なら、その数字をそのまま記載。
もし100億未満(つまり11ケタ未満)なら、あと何桁必要かを記載。

【標準入力】

price

【回答例】

price = input()
if len(price) >= 11:
    print("OK")
else:
    print(11 - len(price))

売買代金が最も大きい案件を採用する

【問題文】

3つの選択肢の中から、売買代金が最も大きい案件をピックアップする。

【標準入力】

asset_1 asset_2 asset_3

【回答例】

price = input().split(" ")
asset_1 = price[0]
asset_2 = price
asset_3 = price
print(max(asset_1, asset_2, asset_3))

一週間の契約がある日を調べる

【問題文】

一週間の契約がある日を調べる。
(契約がある日は"yes"、ない日は"no")

【標準入力】

mon
tue
wed
thu
fri
sat
sun

【回答例】

mon = input()
tue = input()
wed = input()
thu = input()
fri = input()
sat = input()
sun = input()
days = [mon, tue, wed, thu, fri, sat, sun]
print(days.count("yes"))

不動産用語内の特定の文字を見つける

【問題文】

不動産用語内の特定の文字を見つけ、何番目かを出力する。

【標準入力】

s
※単語、FUDOUSANの中の一文字を入力、例)Aなど

【回答例】

s = input()
word = "FUDOUSAN"
print(int(word.find(s)+1))

創業から9年目までの売上目標を立てる

【問題文】

創業初年度の売上分だけ、毎年売上増となることを目指す。

【標準入力】

n(正の整数)

【回答例】

n = int(input())
print(' '.join([str(i*n) for i in range(1,10)]))

縦の文字をくっつける

【問題文】

縦の文字をくっつける。

【標準入力】

6(←表示する文字数を1行目で入力)
T
o
u
s
h
i

【回答例】

n = int(input())
word = []
for i in range(n):
    word.append(input())
print("".join(word))

売買代金が最大・最小の案件をピックアップする

【問題文】

複数の物件の売買代金の中で、最大の物件と最小の物件をピックアップする。

【標準入力】(単位:億円として)

price_1
price_2
price_3
price_4
price_5

【回答例】

price_1 = int(input())
price_2 = int(input())
price_3 = int(input())
price_4 = int(input())
price_5 = int(input())
print(max(price_1, price_2, price_3, price_4, price_5))
print(min(price_1, price_2, price_3, price_4, price_5))

不動産仲介が売り側案件と買い側案件を数える

【問題文】

不動産仲介会社が直近の10案件につき、売り側案件と買い側案件を数える。
売り側エージェントならS、買い側エージェントならBとし、Sが5以上なら売り側得意、Sが5未満なら買い側得意と記載。

【標準入力】

S S B S B S S B B S S

【回答例】

deal = input().split(" ")
if deal.count("S") >= 5:
    print("売り側得意")
else:
    print("買い側得意")

任意の数の物件の売買代金を合計する

【問題文】

1週間の任意の数の物件の売買代金を合計する。

【標準入力】

4(←物件数)
price_1, price_2, price_3, price_4

【回答例】

N = int(input())
word = [int(s) for s in input().split(' ')]
print(sum(word))

営業担当員の数を調整する

【問題文】

A社では、戸建てとマンションの営業担当者につき、必ず一方を偶数人、もう一方を奇数人にする決まりがある。
入力された営業員数がA社規定に即しているか判断する。
(例、戸建て3人・マンション4人、戸建て6人・マンション7人)

【標準入力】

kodate mansion

【回答例】

nums = [int(s) for s in input().split(' ')]
kodate = nums[0]
mansion = nums
both = kodate + mansion
if both % 2 != 0:
    print("YES")
else:
    print("NO")

1週間の経費が予算内か否かを調べる

【問題文】

1周間の経費を計算し、予算内か調べ、超えていたら「使いすぎ」、超えていなければ「OK」と表示。

【標準入力】(単位:万円として)

cost_1, cost_2, cost_3, cost_4, cost_5, cost_6, cost_7
budget

【回答例】

costs = [int(s) for s in input().split(' ')]
budget = int(input())
if int(sum(costs)/7) > budget:
    print("使いすぎ!")
else:
    print("OK")

実績管理票の文字を読み取り出力する

【問題文】

表(実績管理票など、横W×縦Hの形式)の数字を読み取り、出力する。

【標準入力】

W H
S_{0,0}S_{0,1}...S_{0,W}
...

【回答例】

line_column = input().split(" ")
for s in range(int(line_column)):
    print(input())

顧客アンケートにつき、必要な箇所だけ抽出する

【問題文】

顧客アンケートにつき、必要な箇所だけ抽出する。

【標準入力】

words
(例、顧客アンケートで利用している不動産会社名をヒアリング。「○○」との回答もあれば、「○○不動産」との回答もあり、表できれいに出力するため、もし「不動産」の用語を含んでいれば、○○のみ抽出する。)

【回答例】

words = input()
if "fudousan" in words:
    print(words.replace("fudousan", ""))
else:
    print(words)

売上が低い日のみ抽出する

【問題文】

1週間7日間のうち、1日の売上が30万円を下回った日数を抽出する。

【標準入力】

day_1
day_2
day_3
day_4
day_5
day_6
day_7

【回答例】

count = 0
for day_i in range(7):
    day_i = int(input())
    if day_i <= 30:
        count = count + 1
print(count)

契約書の文言修正

【問題文】

書類で「契約書」と書くべきところ、「重要事項説明書」と書いてしまった行を発見し、これを修正するプログラムを記載。

【標準入力】

sentence

【回答例】

sentence = input()
print(sentence.replace("重要事項説明書", "契約書"))

マンション派か戸建派かを調べて、結論を出す

【問題文】

顧客101人にアンケートを取り、過半数を占めた方をトレンドと予測する。

【標準入力】

client_1
client_2
・・・
client_101

【回答例】

count = 0
for client_i in range(101):
    client_i = input()
    # print(client_i)
    if client_i == "mansion":
        count = count + 1
if count >= 51:
    print("マンション派が多い")
else:
    print("戸建派が多い")

不動産手数料の端数(下二桁)をディスカウントする

【問題文】

不動産手数料の端数(下二桁)をディスカウントした数字を表示する。

【標準入力】

fee

【回答例】

fee = input()
discount = fee[-2]+fee[-1]
print(int(fee) - int(discount))

専門用語や専門機関の略語を表示する

【問題文】

専門用語や専門機関の略語を表示するコードを記載する。
(例、不動産証券化協会Association Real Estate Securitizationなら、ARES)
(例、純収益Net Operating Incomeなら、NOI)

【標準入力】

N(単語の数)
word_1 word_2 word_3 ... word_N

【回答例】

N = input()
word = input().split(" ")
initial = []
for s_i in range(int(N)):
    initial.append(word[s_i][0])
print("".join(initial))

数字と文字を分離して表示し、管理を容易にする

【問題文】

顧客アンケートから寄せられた回答を、数字と文字を分離し、数字だけを抽出して表示する。
(例、538㎡であれば、538。4300万円であれば、4300。)

【標準入力】

nw(nは数値で、wは用語)

【回答例】

import re
num_moji = input()
num = re.sub("\\D", "", num_moji)
print(num)

足りないプロジェクトファイルを調査する

【問題文】

1〜5番まで割り振られたプロジェクトファイルのうち、ランダムに4つだけ見つかり、残りの1つの番号を調査する。

【標準入力】

project_1
project_2
project_3
project_4

【回答例】

project_1 = int(input())
project_2 = int(input())
project_3 = int(input())
project_4 = int(input())
list1 = [project_1, project_2, project_3, project_4]
list2 = 
list3 = set(list1) ^ set(list2)
list3 = list(list3)
print(list3[0])

成約した月が一定数以上の従業員に臨時ボーナスの支給を検討する

【問題文】

成約した月が一定数以上の従業員に臨時ボーナスの支給を検討する。

【標準入力】

contact_month(←契約した月を表した文字列、契約月はC(Contract)、契約がない月はN(No))
min_month(←臨時ボーナス支給の最低の月数)

【回答例】

contact_month = input()
get_point = int(input())

if contact_month.count("C") >= N:
    print("Yes")
else:
    print("No")

キャッチフレーズ広告の横の長さを決める

【問題文】

キャッチフレーズ広告の横の長さを決める。
(例)
不動産に
投資して
副収入を得よう!
であれば、3行目が最も長く8文字。

【標準入力】

word_1 = input()
word_2 = input()
word_3 = input()

【回答例】

word_1 = input()
word_2 = input()
word_3 = input()
print(max(len(word_1), len(word_2), len(word_3)))

特定の文字を削除する

【問題文】

特定の用語を削除する。
(例、fudousanから、母音aiueo音を削除する)

【標準入力】

word

【回答例1】

word = input()
word = word.replace('a', '')
word = word.replace('i', '')
word = word.replace('u', '')
word = word.replace('e', '')
word = word.replace('o', '')
print(word)

【回答例2】

word = input()
word = word.replace('a', '').replace('i', '').replace('u', '').replace('e', '').replace('o', '') 
print(word)

売買物件単価と見込み最小販売額から、最低売上を求める

【問題文】

売買物件単価と見込み最小販売額から、最低売上を求める。
(例、

S = int(input())
costs = [int(s) for s in input().split(' ')]
print(S * min(costs))

売買代金が大きい方を選択、もしくは同額ならそれを記載する

【問題文】

売買代金が大きい方を選択、もしくは同額ならそれを記載する。
(例、物件A:10億、物件B:20億なら、20を表示)
(例、物件C:5億、物件D:5億なら、5を表示)

【標準入力】

price1 price2

【回答例1】

prices = [int(s) for s in input().split(' ')]
price1 = prices[0]
price2 = prices
if price1 != price2:
    print(max(prices))
else:
    print("eq")

縦に並べられた用語や文章を結合する

【問題文】

縦に並べられた用語や文章を結合する。
(例)
6
当社が扱っているエリアは、
東京都
神奈川県
埼玉県
千葉県
の1都3県

【標準入力】

num #入力される文字列の個数
word_1 #半角アルファベットの文字列
word_2
...
word_i

【回答例】

num = int(input())
word = []
for i in range(n):
    word.append(input())
print("H当社が扱っているエリアは、 " + "," .join(word) + ".")

特定の番目の文字を削除する

【問題文】

特定の番目の文字を削除する。
(例)
FUDOUSAN
2
なら、FDOUSANと出力

【標準入力】

word
num

【回答例】

word = input()
num = int(input())
X = word[num-1]
print(word.replace(X, ''))
不動産投資にご興味がある方向け

多数の不動産投資サービス会社の中から、私自身の長年の業界経験を踏まえ、
特に信頼・おススメできる2社のみ厳選(現物投資と少額投資1社ずつ)。

ライフプラン診断LP

不動産現物投資おススメNo1
東証マザーズ上場企業GA Technologies運営のライフプラン診断。
購入可能上限額・おススメの運用例・老後の資産保有イメージが分かります。
今だけ、無料の投資ニーズ相談でAmazonギフト券3万円分がもらえます
不動産投資も学べるアマギフ3万円で、まさに一石二鳥

OwnersBook不動産少額投資おススメNo1
東証マザーズ上場企業ロードスターキャピタル運営の不動産クラウドファンディング「Ownersbook」。少額投資から不動産投資をスタートできます。
ほとんど利息が付かない銀行預金よりも、一部を不動産クラウドファンディングに分散してみることをおススメします
不動産業界の長い私から見ても、同社の担当者は不動産のプロ中のプロです。