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

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

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

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

Q&A

解決済

2回答

738閲覧

リスト化データを表示

godgold777

総合スコア2

Python 3.x

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

0グッド

0クリップ

投稿2021/11/13 04:15

編集2021/11/13 14:04

前提・実現したいこと

Pythonプログラム初心者の学生です
365日の月日をインプットし、リスト化した情報を表示させたいのですが正しい表示が出ません
インターネットの情報をもとに応用して勉強していますが、まだまだ理解が足りていないため
ご教授ください
もっと基本的なことを勉強しなければいけないことは自分自身理解しております
正しく表示させるにはどのようにすればよろしいのでしょうか?

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

入力項目で花言葉を正しく表示させたいのですが、全く違うリストが表示されます
例)1月2日を入力すると
正:梅 不屈の精神・高潔です
誤表示:カーネーション 無垢で深い愛です
最初の月を入力した時点で表示内容が確定していると思っています

エラーメッセージ
エラーではないのですが、そもそもの考え方が間違っていると思います

該当のソースコード

Python

1import tkinter as tk 2root = tk.Tk() 3root.title('誕生日診断') 4canvas = tk.Canvas(root, height=600, width=900,bg="#FFFFFF") 5canvas.pack() 6root = tk.Tk() 7root.title('花言葉診断') 8lbl = tk.Label(text='あなたの花言葉を調べましょう!誕生日を入力して下さい', bg="#FFFFFF") 9lbl.place(x=590, y=10) 10lbl = tk.Label(text='月', bg="#FFFFFF") 11lbl.place(x=590, y=30) 12lbl = tk.Label(text='日', bg="#FFFFFF") 13lbl.place(x=590, y=100) 14lbl2 = tk.Label(text='貴方の花言葉は' , bg="#FFFFFF") 15lbl2.place(x=590, y=220) 16Entry5= tk.Entry(width=20, bg="#EEEEEE") 17Entry5.place(x=590, y=70) 18Entry6= tk.Entry(width=20, bg="#EEEEEE") 19Entry6.place(x=590, y=130) 20abc = [ 21 ["カーネーション"" ""無垢で深い愛", 1, 1], 22 ["梅"" ""不屈の精神・高潔", 1, 2], 23 ["チューリップ"" ""思いやり", 1, 3], 24 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 4], 25 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 5], 26 ["薔薇"" ""愛・美", 1, 6], 27 ["ハス"" ""清らかな心・神聖", 1, 7], 28 ["ひまわり"" ""憧れ・あなただけを見つめる",1, 8], 29 ["ダリア"" ""栄華・気まぐれ", 1, 9], 30 ["ガーベラ"" ""希望・前進", 1, 10], 31 ["ポインセチア"" ""聖夜・幸運を祈る", 1, 11], 32 ["カーネーション"" ""無垢で深い愛", 1, 12], 33 ["梅"" ""不屈の精神・高潔", 1, 13], 34 ["チューリップ"" ""思いやり", 1, 14], 35 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 15], 36 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 16], 37 ["薔薇"" ""愛・美",1, 17], 38 ["ハス"" ""清らかな心・神聖", 1, 18], 39 ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 19], 40 ["ダリア"" ""栄華・気まぐれ", 1, 20], 41 ["ガーベラ"" ""希望・前進", 1, 21], 42 ["シクラメン"" ""遠慮・気おくれ", 1, 22], 43 ["ポインセチア"" ""聖夜・幸運を祈る", 1, 23], 44 ["カーネーション"" ""無垢で深い愛", 1, 24], 45 ["梅"" ""不屈の精神・高潔", 1, 25], 46 ["チューリップ"" ""思いやり", 1, 26], 47 ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 27], 48 ["スズラン"" ""再び幸せが訪れる・純粋", 1, 28], 49 ["薔薇"" ""愛・美", 1, 29], 50 ["ハス"" ""清らかな心・神聖", 1, 30], 51 ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 31], 52 ["ダリア"" ""栄華・気まぐれ", 2, 1], 53 ] 54var = tk.StringVar() 55def command1(): 56 57 for i in range(len(abc)): 58 if abc[i][1] == int(Entry5.get()): 59 if abc[i][2] <= int(Entry6.get()): 60 #var.set(f"{abc[i][0]}です") 61 result = f"{abc[i][0]}です" 62 break 63 else: 64 #var.set(f"{abc[i-1][0]}です") 65 result = f"{abc[i-1][0]}です" 66 break 67 #lbl4 = tk.Label(textvariable=var) 68 lbl5 = tk.Label(text=result) 69 lbl5.place(x=650, y=250) 70 return 0 71cmdbtn = tk.Button(canvas, 72 text="確認",padx=10, pady=5, 73 command=command1).place(x=690, y=170) 74clsbtn = tk.Button(canvas, 75 text="終了", padx=10, pady=5, 76 fg="red", 77 command=quit).place(x=750, y=170) 78root.mainloop() 79

試したこと

自分なりに試しましたが、全く意味のないことでした

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

Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32

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

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

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

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

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

godgold777

2021/11/13 08:01 編集

お手数をおかけします 修正して下記に転記しました こちらでよろしいでしょうか? すみません import tkinter as tk root = tk.Tk() root.title('誕生日診断') canvas = tk.Canvas(root, height=600, width=900,bg="#FFFFFF") canvas.pack() root = tk.Tk() root.title('花言葉診断') lbl = tk.Label(text='あなたの花言葉を調べましょう!誕生日を入力して下さい', bg="#FFFFFF") lbl.place(x=590, y=10) lbl = tk.Label(text='月', bg="#FFFFFF") lbl.place(x=590, y=30) lbl = tk.Label(text='日', bg="#FFFFFF") lbl.place(x=590, y=100) lbl2 = tk.Label(text='貴方の花言葉は' , bg="#FFFFFF") lbl2.place(x=590, y=220) Entry5= tk.Entry(width=20, bg="#EEEEEE") Entry5.place(x=590, y=70) Entry6= tk.Entry(width=20, bg="#EEEEEE") Entry6.place(x=590, y=130) abc = [ ["カーネーション"" ""無垢で深い愛", 1, 1], ["梅"" ""不屈の精神・高潔", 1, 2], ["チューリップ"" ""思いやり", 1, 3], ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 4], ["スズラン"" ""再び幸せが訪れる・純粋", 1, 5], ["薔薇"" ""愛・美", 1, 6], ["ハス"" ""清らかな心・神聖", 1, 7], ["ひまわり"" ""憧れ・あなただけを見つめる",1, 8], ["ダリア"" ""栄華・気まぐれ", 1, 9], ["ガーベラ"" ""希望・前進", 1, 10], ["ポインセチア"" ""聖夜・幸運を祈る", 1, 11], ["カーネーション"" ""無垢で深い愛", 1, 12], ["梅"" ""不屈の精神・高潔", 1, 13], ["チューリップ"" ""思いやり", 1, 14], ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 15], ["スズラン"" ""再び幸せが訪れる・純粋", 1, 16], ["薔薇"" ""愛・美",1, 17], ["ハス"" ""清らかな心・神聖", 1, 18], ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 19], ["ダリア"" ""栄華・気まぐれ", 1, 20], ["ガーベラ"" ""希望・前進", 1, 21], ["シクラメン"" ""遠慮・気おくれ", 1, 22], ["ポインセチア"" ""聖夜・幸運を祈る", 1, 23], ["カーネーション"" ""無垢で深い愛", 1, 24], ["梅"" ""不屈の精神・高潔", 1, 25], ["チューリップ"" ""思いやり", 1, 26], ["アルストロメリア"" ""花言葉は持続・エキゾチック", 1, 27], ["スズラン"" ""再び幸せが訪れる・純粋", 1, 28], ["薔薇"" ""愛・美", 1, 29], ["ハス"" ""清らかな心・神聖", 1, 30], ["ひまわり"" ""憧れ・あなただけを見つめる", 1, 31], ["ダリア"" ""栄華・気まぐれ", 2, 1], ] var = tk.StringVar() def command1(): for i in range(len(abc)): if abc[i][1] == int(Entry5.get()): if abc[i][2] <= int(Entry6.get()): #var.set(f"{abc[i][0]}です") result = f"{abc[i][0]}です" break else: #var.set(f"{abc[i-1][0]}です") result = f"{abc[i-1][0]}です" break #lbl4 = tk.Label(textvariable=var) lbl5 = tk.Label(text=result) lbl5.place(x=650, y=250) return 0 cmdbtn = tk.Button(canvas, text="確認",padx=10, pady=5, command=command1).place(x=690, y=170) clsbtn = tk.Button(canvas, text="終了", padx=10, pady=5, fg="red", command=quit).place(x=750, y=170) root.mainloop()
meg_

2021/11/13 07:16

コードは「コードの挿入」で記入してください。
guest

回答2

0

command1()のコードを下記の様にしてはどうでしょうか?

python

1for i in range(len(abc)): 2 if abc[i][1] == int(Entry5.get()): 3 if abc[i][2] >= int(Entry6.get()): 4 result = f"{abc[i][0]}です" 5 break 6 lbl5 = tk.Label(text=result) 7 lbl5.place(x=650, y=250) 8 return 0

日付は1/1~2/1とします。

投稿2021/11/13 15:22

meg_

総合スコア10760

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

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

0

ベストアンサー

if abc[i][2] <= int(Entry6.get()):<= で比較しているので1月は全て1月1日の花言葉「カーネーション 無垢で深い愛」になってしまいます。abc のリスト構造を変更する方が適切なのでしょうけれど、それはそのままにして list comprehension を使って花言葉を見つけてみましょう。

python

1flower_text = tk.StringVar() 2flower_text.set('') 3flower_label = tk.Label(textvariable=flower_text) 4 5def command1(): 6 global abc, flower_text, flower_label 7 text = [t for (t, m, d) in abc if (m, d) == (int(Entry5.get()), int(Entry6.get()))] 8 text = text[0] if text else '花言葉が見つかりません' 9 flower_text.set(text) 10 flower_label.place(x=650, y=250) 11 return

投稿2021/11/13 14:52

編集2021/11/13 14:55
melian

総合スコア20655

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

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

godgold777

2021/11/14 03:46

皆様 お手数をお掛けしました 頂いた情報で思い通りに表示出来ました これからもっと勉強していきます ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問