#python #python-3.x
#python #python-3.x
Вопрос:
Я написал код, который создает квадрат со случайным числом от 1 до 16. Я хочу создать сетку квадратов со случайным числом. Я знаю, как это сделать, повторяя части кода несколько раз и изменяя некоторые цифры, но я знаю, что это будет скучно делать и не получится здорово. Есть ли способ создать короткий код, который будет выполнять повторную работу за меня?
Мой код:
from tkinter import *
from random import randint
root = Tk()
root.title("root")
root.geometry("500x300")
F1 = Frame(root, height=150, width=250, highlightbackground="black", highlightthickness=2)
F1.place(x=0, y=0)
L1 = Label(root, font=("bold", 10))
L1.place(x=125, y=75)
R1 = randint(1, 16)
if R1 == 1:
L1.config(text="1")
if R1 == 2:
L1.config(text="2")
if R1 == 3:
L1.config(text="3")
if R1 == 4:
L1.config(text="4")
if R1 == 5:
L1.config(text="5")
if R1 == 6:
L1.config(text="6")
if R1 == 7:
L1.config(text="7")
if R1 == 8:
L1.config(text="8")
if R1 == 9:
L1.config(text="9")
if R1 == 10:
L1.config(text="10")
if R1 == 11:
L1.config(text="12")
if R1 == 13:
L1.config(text="13")
if R1 == 14:
L1.config(text="14")
if R1 == 15:
L1.config(text="15")
if R1 == 16:
L1.config(text="16")
Комментарии:
1. Ошибка отступа — много. Пожалуйста, исправьте.
2. создайте функцию.. или создайте словарь..
Ответ №1:
вы можете преобразовать R1 в str
и вместо многих if
операторов вы можете сделать это:
L1.config(text=str(R1))
Ответ №2:
Здесь простым решением было бы
<...>
R1 = randint(1, 16)
if R1 <= 7:
L1.config(text=str(R1))
Если связь между вашей переменной R1
и текстом, который вы хотите отобразить, более сложная, вы могли бы использовать словарь.
Просто случайный пример, чтобы дать вам приблизительное представление:
R1 = randint(1, 16)
r1_texts = {
1: 'This one is special',
2: 'This one is special, too',
3: 'This one is extremely special'
}
for i in range(4, 17):
r1_texts[i] = 'The random number is {}'.format(i)
L1.config(text=r1_texts[R1])
Ответ №3:
Вы пробовали что-то подобное:
R1 = randint(1,16)
L1.config(text=str(R1))
Комментарии:
1. Тот же ответ получен за 6 минут до вашей публикации. Пожалуйста, избегайте повторяющихся ответов.
Ответ №4:
Я не знаю контекста, но вы можете реализовать функцию, подобную этой:
def text_configuration(L1, R1):
if R1 in range(1,16):
L1.config(text=str(R1))
else:
raise Exemption
Или принимая во внимание случайное назначение, и при условии, что оно вам не нужно в другом контексте:
def random_text_configuration(L1):
R1=randint(1,16)
L1.config(text=str(R1))
Комментарии:
1. Зацикливание на значениях от 0 до 15, пока вы не дойдете до значения, которое вы уже знаете, бесполезно. Ваш последний фрагмент кода является копией предыдущего ответа.
2. вы правы, я удалил первый ответ, я открыл редактор до того, как появился другой ответ…