#python
Вопрос:
Я ищу способ без использования слишком большого if/elif
количества операторов для поиска элементов, когда выполняются следующие условия. Иначе, более эффективным способом.
import tkinter as tk
from tkinter import messagebox
import json
from form import Character_Assessment
class Dominant:
def __init__(self):
self.character1=[a,b,c]
self.character2=[a,b,c]
self.character3=[a,b,c]
self.character4=[a,b,c]
self.character5=[a,b,c]
self.character6=[a,b,c]
def find_match(self):
self.y_1 = 0
self.x_1 = 0
for f in self.extrovert:
q3 = tk.simpledialog.askstring(title="Please type 'y','dmt','ext'", prompt=f)
if q3 == "y":
self.x_1 = 1
elif q3 == "dmt":
self.x_1 = 1.5
elif q3 == "ext":
self.x_1 = 2
if 0 <=self.x_1 <= 16 and 2.25<=self.y_1<3:
with open("Draft.txt", mode="a") as dr:
dr.write(f"Specific:n {self.character3[5]}")
elif 0 <=self.x_1 <= 16 and 1.5<=self.y_1<2.25:
with open("Draft.txt", mode="a") as dr:
dr.write(f"Specific:n {self.character3[6]}")
elif 0 <=self.x_1 <= 16 and 0<=self.y_1<1.5:
with open("Draft.txt", mode="a") as dr:
dr.write(f"Specific:n {self.character3[7]}")
.
.(20 more conditions)
.
Моя цель-не писать такие длинные строки, сопоставляя элементы.
Комментарии:
1. Вложенные «если»? один для границы x, которая повторяется, и один для границ y?
2. Не могли бы вы привести мне пример? Спасибо.
3. Поместите свои значения в список кортежей (или списков) и используйте
for
цикл.4.
if 0 < x < 16: if 2.25 < y < 3
… на самом деле это не меньше, если высказывания за высказывание, но более эффективно дляelif
высказываний, так как вы не перепроверяете одно и то же условие5. Кроме того, вам нужно открыть файл для записи только один раз. Почему вы делаете это в каждом состоянии?