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

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

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

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

Python

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

Q&A

解決済

1回答

661閲覧

Noneの中に0が入らない。

YUKI_B

総合スコア77

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2018/11/19 09:04

前提・実現したいこと

エネルギー消費性能計算プログラム(住宅版)のAPIを用いたプログラムを作成中です。
変数(E_H)の中身がNoneと返している値の中に数値の0を代入したいのですが、うまく入りません。
対処方法をご教授いただければ幸いです

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

File "run_eval_plus_58.py", line 114, in <module> sheet.cell(row=28, column=14, value=int(E_H)) ValueError: invalid literal for int() with base 10: 'None'

該当のソースコード

python

1import urllib.request 2import xml.etree.ElementTree as ET 3import openpyxl as px 4 5book = px.load_workbook('renshu.xlsm') 6sheet = book.active 7 8 9########################################################################################## 10## ここからはデータ入力 11for i in range(1): 12 13 UA = sheet.cell(row=24,column=14).value 14 ηAC = sheet.cell(row=25,column=14).value 15 ηAH = sheet.cell(row=26,column=14).value 16 17 #print(UA) 18 #print(ηAC) 19 #print(ηAH) 20 21 22################################################################ 23## model=この中にモデルの面積なり区分なりを入力する。各単語の意味は上記参照。もしくはマニュアル参照 24 model = f""" 25 <House FileVer="1" Name="Sample" Type="Standard,Independent" TotalArea="120.08"> 26 <Environment Region="8" /> 27 <Zones> 28 <Zone Type="LDK" Area="29.81" NaturalWind="0" /> 29 <Zone Type="Other" Area="51.34" NaturalWind="0" /> 30 </Zones> 31 <Envelope HeatStorage="None" EvaluationMethod="Real" TotalEnvelopeArea="307.51" 32 UAValue="{UA}" SummerHAValue="{ηAC}" WinterHAValue="{ηAH}" /> 33 <Heating Type="NotInstalled" /> 34 <Cooling Type="NotInstalled" /> 35 <Ventilation Type="DuctVentilation1" SFP="0.3" Frequency="HalfPerHour" /> 36 <Lighting /> 37 </House> 38 """ 39 #print(model)  40 41 data = "<request><model>{}</model><format>NewStandard</format></request>".format(model) 42 data = data.encode() # to bytes 43 req = urllib.request.Request('https://house.app.lowenergy.jp/api/v1/eval', data=data) 44 45 req.add_header('Content-type', 'application/xml; charset=utf-8') 46 req.add_header('Accept', 'application/xml') 47 48 res = urllib.request.urlopen(req) 49 xml = res.read() 50 #print(xml) 51 52## 結果出力変数の定義 53 E_H = ( "{}".format(ET.fromstring(xml).findtext('E_H'))) # 暖房設備の設計一次エネルギー 54 E_C = ( "{}".format(ET.fromstring(xml).findtext('E_C'))) # 冷房設備の設計一次エネルギー 55 E_V = ( "{}".format(ET.fromstring(xml).findtext('E_V'))) # 換気設備の設計一次エネルギー 56 E_L = ( "{}".format(ET.fromstring(xml).findtext('E_L'))) # 照明設備の設計一次エネルギー 57 E_W = ( "{}".format(ET.fromstring(xml).findtext('E_W'))) # 給湯設備の設計一次エネルギー 58 E_S = ( "{}".format(ET.fromstring(xml).findtext('E_S'))) # エネルギー効率化による削減量 59 60 BEI = ( "{}".format(ET.fromstring(xml).findtext('BEI'))) # 評価基準のBEIの値 61 62 63 E_C_p = ( "E_C: {}".format(ET.fromstring(xml).findtext('E_C'))) 64 #print(E_C_p) # E_C: 8 65 #print('{}'.format(E_C)) 66 67####################################################################################### 68## ここから書き込み 69 70# ブックを取得 71 #book = px.load_workbook('renshu.xlsm') 72 # シートを取得 73 sheet = book['Sheet1'] 74 # セルを取得 75 76 for x in range(1): 77 if E_H is None: 78 E_H = '0' 79 print(E_H) 80 if E_C is None: 81 E_C is '0' 82 if E_V is None: 83 E_L is '0' 84 if E_W is None: 85 E_W is '0' 86 if E_S is None: 87 E_S is '0' 88 sheet.cell(row=28, column=14, value=int(E_H)) 89 sheet.cell(row=29, column=14, value=int(E_C)) 90 sheet.cell(row=30, column=14, value=int(E_V)) 91 sheet.cell(row=31, column=14, value=int(E_L)) 92 sheet.cell(row=32, column=14, value=int(E_W)) 93 sheet.cell(row=33, column=14, value=int(E_S)) 94 sheet.cell(row=37, column=14, value=int(BEI)) 95 96 #print(a) 97 98 book.save('renshu.xlsx')

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージから判断するに、返っているのはNoneではなく'None'という文字列のようです。そうなっている理由は、上でformatを使ってstrに変換しているからですね(この変換必要ですか?)

python

1>>> int(None) 2Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' 5>>> int('None') 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8ValueError: invalid literal for int() with base 10: 'None'

応急処置としては、以下のようにすれば現在出ているエラーだけは解消すると思いますが、根本的に設計を変えたほうが良いかもしれません(そもそも'None'以外にも数字に変換できない文字列など幾らでもある訳ですし)。

python

1 if E_H == 'None': 2 E_H = '0'

あと、下のifのブロックの中身がすべてisになっていますが、代入文に直しておく必要があると思います。

投稿2018/11/19 09:11

hayataka2049

総合スコア30933

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

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

YUKI_B

2018/11/21 01:30

返事が遅れまして誠に申し訳ございません。 ご回答いただきありがとうございます。 頂いた対処方法でどうにかなりました。 >>根本的に設計を変えたほうが良いかもしれません 一通り終えてから、考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問