teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

わかりにくいということだったので、タイトルも変更

2018/04/28 21:31

投稿

morutemu
morutemu

スコア45

title CHANGED
@@ -1,1 +1,1 @@
1
- pythonのfor文を教えてくださ
1
+ pythonのif文をfor文変更した
body CHANGED
File without changes

1

内容が分かりにくいとのことでしたので、編集しました。

2018/04/28 21:31

投稿

morutemu
morutemu

スコア45

title CHANGED
File without changes
body CHANGED
@@ -65,4 +65,239 @@
65
65
  i+=1
66
66
  break
67
67
 
68
- ```
68
+ ```
69
+
70
+ # 追加
71
+ 上記質問で、わかりにくいとのことだったので質問内容を追加します。
72
+ もともと、上記プログラムのfor文でやりたかったことは、
73
+ 以下プログラムになります。
74
+ 簡単に言うとそれをぎゅっと縮めたくて、
75
+ for文を使ってみたのですが、それでうまくいかなくなりました。
76
+ じゃあ動いていた方使えばいいじゃないと感じるかもしれませんが、、
77
+ よろしくお願いします。
78
+
79
+ ```python
80
+ if now == "today":
81
+ if garbage == "燃":
82
+ print(msg[0] + msg[3] + msg[2])
83
+ elif garbage == "不":
84
+ print(msg[0] + msg[4] + msg[2])
85
+ elif garbage == "缶":
86
+ print(msg[0] + msg[5] + msg[2])
87
+ elif garbage == "資":
88
+ print(msg[0] + msg[6] + msg[2])
89
+ elif garbage == "紙":
90
+ print(msg[0] + msg[7] + msg[2])
91
+ elif garbage == "草":
92
+ print(msg[0] + msg[8] + msg[2])
93
+ elif garbage == "粗":
94
+ print(msg[0] + msg[9] + msg[2])
95
+ else:
96
+ print(msg[10])
97
+ elif now == "tommorow":
98
+ if garbage == "燃":
99
+ print(msg[1] + msg[3] + msg[2])
100
+ elif garbage == "不":
101
+ print(msg[1] + msg[4] + msg[2])
102
+ elif garbage == "缶":
103
+ print(msg[1] + msg[5] + msg[2])
104
+ elif garbage == "資":
105
+ print(msg[1] + msg[6] + msg[2])
106
+ elif garbage == "紙":
107
+ print(msg[1] + msg[7] + msg[2])
108
+ elif garbage == "草":
109
+ print(msg[1] + msg[8] + msg[2])
110
+ elif garbage == "粗":
111
+ print(msg[1] + msg[9] + msg[2])
112
+ else:
113
+ print(msg[11])
114
+ ```
115
+
116
+ もともとうまくいっていたプログラム全文↓
117
+
118
+ ```python
119
+ #!/usr/bin/env python
120
+ # -*- coding: utf-8 -*-
121
+
122
+ # +++ モジュール +++
123
+ from threading import Thread
124
+ #import RPi.GPIO as GPIO
125
+ import datetime
126
+ import schedule
127
+ import pandas
128
+ import time
129
+ import csv
130
+ import os
131
+
132
+ # +++ 変数 +++
133
+ # リマインド時間
134
+ spc_time = "7:20"
135
+
136
+ # 確認時間
137
+ start_time = "00:00:00"
138
+ end_time = "08:10:00"
139
+
140
+ # +++ クラス +++
141
+ class GarbageDayReminder(object):
142
+ # イニシャライズ
143
+ def __init__(self):
144
+ pass
145
+
146
+ # 日付処理
147
+ def date(self):
148
+ # 変数
149
+ FormatDay = "%Y/%m/%d "
150
+ FormatTime = "%H:%M:%S"
151
+
152
+ # 今日の日時を取得
153
+ now = datetime.datetime.now()
154
+
155
+ # 明日の日時を取得
156
+ tmr = now + datetime.timedelta(days=1)
157
+
158
+ # 1990-01-01対策の現在日付を追加
159
+ date = now.strftime(FormatDay)
160
+
161
+ # 今日、明日を振り分ける時間を作成
162
+ start = datetime.datetime.strptime(date + start_time, FormatDay + FormatTime)
163
+ end = datetime.datetime.strptime(date + end_time, FormatDay + FormatTime)
164
+
165
+ # 今日、明日日付取得の分岐
166
+ if start <= now <= end:
167
+ # 今日日付の取得
168
+ today = "{}/{}/{}".format(now.year, now.month, now.day)
169
+ return today ,"today"
170
+ else:
171
+ # 明日の日付を取得
172
+ tommorow = "{}/{}/{}".format(tmr.year, tmr.month, tmr.day)
173
+ return tommorow ,"tommorow"
174
+
175
+ # csv処理
176
+ def csv(self,date):
177
+ # csvファイルを読み込む
178
+ df = pandas.read_csv("./garbage_day.csv", encoding='cp932')
179
+
180
+ # 何のゴミの日か取得
181
+ garbage = df[df["日付"] == date]["ゴミ"].values[0]
182
+
183
+ return garbage
184
+
185
+ # リマインダー処理
186
+ def reminder(self, now, garbage):
187
+ msg = ["今日は",\
188
+ "明日は",\
189
+ "の日です",\
190
+ "燃やすごみ",\
191
+ "燃やさないごみ",\
192
+ "空き缶、スプレー缶、空きびん、廃蛍光管",\
193
+ "プラスチック製容器梱包、ペットボトル",\
194
+ "紙類ごみ",\
195
+ "せんてい枝、庭の草",\
196
+ "粗大ごみ",\
197
+ "今日のごみの日はありません",\
198
+ "明日のゴミの日はありません"
199
+ ]
200
+
201
+ if now == "today":
202
+ if garbage == "燃":
203
+ print(msg[0] + msg[3] + msg[2])
204
+ elif garbage == "不":
205
+ print(msg[0] + msg[4] + msg[2])
206
+ elif garbage == "缶":
207
+ print(msg[0] + msg[5] + msg[2])
208
+ elif garbage == "資":
209
+ print(msg[0] + msg[6] + msg[2])
210
+ elif garbage == "紙":
211
+ print(msg[0] + msg[7] + msg[2])
212
+ elif garbage == "草":
213
+ print(msg[0] + msg[8] + msg[2])
214
+ elif garbage == "粗":
215
+ print(msg[0] + msg[9] + msg[2])
216
+ else:
217
+ print(msg[10])
218
+ elif now == "tommorow":
219
+ if garbage == "燃":
220
+ print(msg[1] + msg[3] + msg[2])
221
+ elif garbage == "不":
222
+ print(msg[1] + msg[4] + msg[2])
223
+ elif garbage == "缶":
224
+ print(msg[1] + msg[5] + msg[2])
225
+ elif garbage == "資":
226
+ print(msg[1] + msg[6] + msg[2])
227
+ elif garbage == "紙":
228
+ print(msg[1] + msg[7] + msg[2])
229
+ elif garbage == "草":
230
+ print(msg[1] + msg[8] + msg[2])
231
+ elif garbage == "粗":
232
+ print(msg[1] + msg[9] + msg[2])
233
+ else:
234
+ print(msg[11])
235
+
236
+ # 中間処理
237
+ def intermediate(self):
238
+ # 日付処理
239
+ date, now = gdr.date()
240
+
241
+ # csv処理
242
+ garbage = gdr.csv(date)
243
+
244
+ # リマインダー処理
245
+ gdr.reminder(now, garbage)
246
+
247
+ # 指定時間処理
248
+ def specified_time(self):
249
+ schedule.every().day.at(spc_time).do(gdr.intermediate)
250
+ while True:
251
+ schedule.run_pending()
252
+ time.sleep(1)
253
+
254
+ # チェック処理
255
+ def button(self):
256
+ pass
257
+ #GPIO.setmode(GPIO.BCM)
258
+
259
+ #GPIO12pinを入力モードとし、pull up設定とします
260
+ #GPIO.setup(12,GPIO.IN,pull_up_down=GPIO.PUD_UP)
261
+
262
+ #while True:
263
+ # GPIO.wait_for_edge(12, GPIO.FALLING)
264
+ # sw_counter = 0
265
+
266
+ # while True:
267
+ # sw_status = GPIO.input(12)
268
+ # if sw_status == 0:
269
+ # sw_counter = sw_counter + 1
270
+ # if sw_counter >= 30:
271
+ # print("長押し検知!")
272
+ # gdr.intermediate()
273
+ # break
274
+ # else:
275
+ # print("短押し検知")
276
+ # break
277
+
278
+ # time.sleep(0.01)
279
+
280
+ # print(sw_counter)
281
+
282
+ # メイン処理
283
+ def main(self):
284
+ # 指定時間処理(マルチスレッド)
285
+ t = Thread(target=gdr.specified_time)
286
+ t.start()
287
+
288
+ # 実験用(上記プログラムで実行されるので、運用する際はgdr.intermediate()はなし)
289
+ gdr.intermediate()
290
+
291
+ # ボタン処理
292
+ #gdr.button()
293
+
294
+ # +++ 初期動作 +++
295
+ if __name__ == "__main__":
296
+ # GarbageDayReminderクラスをインスタンス化して実行
297
+ gdr = GarbageDayReminder()
298
+ gdr.main()
299
+
300
+ ```
301
+
302
+ これでわかりますでしょうか??
303
+ わからない場合は、どんどん質問おねがいします!