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

質問編集履歴

1

もっとわかりやすいように変更しました!お願いします。

2019/08/21 12:35

投稿

NatsukiKataoka
NatsukiKataoka

スコア7

title CHANGED
File without changes
body CHANGED
@@ -5,23 +5,20 @@
5
5
 
6
6
  ```
7
7
  ---------------------------------------------------------------------------
8
- TypeError Traceback (most recent call last)
8
+ NameError Traceback (most recent call last)
9
- <ipython-input-27-851dd96efc5a> in <module>
9
+ <ipython-input-4-5d5168a40431> in <module>
10
+ 38 return returnOrNot
10
- 89
11
+ 39
11
- 90 #お金を投入したレシート用の表示
12
- ---> 91 message1 = (drinks[liquid].name + 'を買うためにお金を' + moneyPut + "入れました。")
12
+ ---> 40 moneyPut = decide('a')
13
- 92
14
- 93 # __________________________________________________________________
13
+ 41 # __________________________________________________________________
14
+ 42 #自動販売機の飲み物の種類をタプル型で表示
15
15
 
16
- TypeError: tuple indices must be integers or slices, not NoneType
16
+ NameError: name 'decide' is not defined
17
-
18
17
  ```
19
18
 
20
19
  ### 該当のソースコード
21
20
 
22
21
  ```python
23
-
24
- #レシートのためのdatetimeモヅェール
25
22
  from datetime import date
26
23
  #todayに日付を入れる
27
24
  today = date.today()
@@ -48,15 +45,18 @@
48
45
  return 'can buy'
49
46
  else:
50
47
  return 'sold out'
51
-
52
48
  def decide(self, i):
53
49
  if i == 'a':
54
50
  moneyPut = int(input('put money'))
51
+ return moneyPut
55
52
  elif i == 'b':
56
53
  liquid = int(input('what to drink? 0:cola, 1:water, 2:tea'))
54
+ return liquid
57
55
  else:
58
56
  returnOrNot=int(input('返金しますか? 0:Yes, 1:No :'))
59
-
57
+ return returnOrNot
58
+
59
+ moneyPut = decide('a')
60
60
  # __________________________________________________________________
61
61
  #自動販売機の飲み物の種類をタプル型で表示
62
62
  cola = Drink('cola', 150, 40)
@@ -70,60 +70,6 @@
70
70
 
71
71
  #ここで飲み物を選ぶ
72
72
  liquid = decide('b')
73
-
74
- #お金を投入したレシート用の表示
75
- message1 = (drinks[liquid].name + 'を買うためにお金を' + moneyPut + "入れました。")
76
-
77
- # __________________________________________________________________
78
-
79
- #飲み物を選び残高またはお金が足りないとでる(100円以下はないので100円の時点でループに入らない)
80
- while int(moneyPut) > 100:
81
- if int(moneyPut) < 140 and (liquid == 0 or liquid == 2):
82
- message2 = ('しかし'+ drinks[liquid].name +'を買うためのお金が足りないため買えませんでした。/n レシートは以上です。')
83
- message3 = 'なにもなし'
84
- break
85
-
86
- elif int(moneyPut) < 150 and (liquid == 2):
87
- print('not enough money')
88
- message2 = ('しかし'+ drinks[liquid].name +'を買うためのお金が足りないため買えませんでした。/n レシートは以上です。')
89
- message3 = 'なにもなし'
90
- break
91
-
92
- else:
93
- message2 = ("あなたの残高は{}円です。".format(int(moneyPut)))
94
- if drinks[liquid].count == 0:
95
- print(drinks[liquid].SoldOutLamp())
96
-
97
- else:
98
- #最終的な金額
99
- moneyToReturn = int(moneyPut) - int(drinks[liquid].price)
100
-
101
- #レシート用のメッセージ
102
- message3 = '買った後の残金は' + str(moneyPut) + "です"
103
-
104
- #返金させるか聞く
105
- # returnOrNot=int(input('返金しますか? 0:Yes, 1:No :'))
106
- returnOrNot = decide('c')
107
- if returnOrNot == 0:
108
- push = True
109
- message4 = (drinks[liquid].returnMoney(moneyToReturn))
110
- else:
111
- message4 = 'buying'
112
-
113
- break
114
-
115
- #レシート作成________________________________________________________
116
- print("今日の日付________________\n" + str(today) + "\n")
117
- print("自動販売機レシート__________\n" + message1 + "\n")
118
- print("あなたの残高_________\n" + message2 + "\n")
119
- print("購入後の残高_______________\n" + message3 + "\n")
120
- print("返却金額__________________\n" + message4)
121
- # __________________________________________________________________
122
-
123
-
124
-
125
-
126
-
127
73
  ```
128
74
 
129
75
 
@@ -131,10 +77,9 @@
131
77
  ●目標_______________________________
132
78
  1. 必要金額が投入されている場合に、飲み物ボタンが押されると缶を出す
133
79
  2. 売切れランプの追加(売切れの時は購入できない)
134
- 3. 返金処理
135
80
  もし可能ならなぜエラーが出てきてしまうのか教えてもらうことって可能でしょうか?
136
81
  本当にお願いします!
137
-
82
+ またクラスの中の関数を使って出されたliquidという数字を使ってdrinks[liquid].name のような事ってできますか?
138
83
  ```
139
84
  ### 補足情報(FW/ツールのバージョンなど)
140
85
  python 3.73です。