Как сделать из рандомного числа переменную

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Крч мне нужно сделать, чтобы рандомное число появлялось в графе label_3, если просто туда вписать (random.randint(int(a),int(b))), то будет крашаться и если переменной С то тоже. Как быть?
Python:
def rp():
    a = ui.lineEdit_2.text()
    b = ui.lineEdit_3.text()
    c = (random.randint(int(a),int(b)))
    ui.label_3.setText()
 
Последнее редактирование модератором:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте через кнопку ... -> код -> python. Попробуйте так:
Python:
c = ui.label_3.setText(random.randint(int(a),int(b)))
 
  • Мне нравится
Реакции: Student

Ketovx

Новичок
Пользователь
Авг 1, 2020
9
2
3
23
RF, KZN
Я попробовал как вы сказали, всё равно приложение просто вылетает. Методом отбора я понял, что ошибка в команде которая должна вставлять рандомное число в Label_3. Всё остальное работает, то есть если взять и написать print(c), то рандомное число пишется в консоли
Возможно нужно привести ваше число к строке?
Python:
c = ui.label_3.setText(str(random.randint(int(a)),int(b)))
 

Ketovx

Новичок
Пользователь
Авг 1, 2020
9
2
3
23
RF, KZN
Попробовал только что, ничего не вышло, все равно вылетает, что то не то с выводом в label.
Вы могли бы прислать текст ошибки? Так было бы проще понять в чём проблема.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Так не совсем правильно делать.

Когда вам нужно привести значение к строковому виду, нужно воспользоваться оператором str().
В случае, когда нужно получить шаблон строки, с встроенным значением, используется форматированная строка - f'{}'

В вашем случае получается неявное приведение типа, что является плохим тоном.
Это не так. Во-первых, f-string быстрее раза в два, во-вторых, после их введения являются рекомендованным способом приводить значение к строке.
В этом случае приведение получается вполне себе явное.
 

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Код вставляйте через кнопку ... -> код -> python. Попробуйте так:
Python:
c = ui.label_3.setText(random.randint(int(a),int(b)))
Я попробовал как вы сказали, всё равно приложение просто вылетает. Методом отбора я понял, что ошибка в команде которая должна вставлять рандомное число в Label_3. Всё остальное работает, то есть если взять и написать print(c), то рандомное число пишется в консоли
 

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Возможно нужно привести ваше число к строке?
Python:
c = ui.label_3.setText(str(random.randint(int(a)),int(b)))
Попробовал только что, ничего не вышло, все равно вылетает, что то не то с выводом в label.
 

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Вы могли бы прислать текст ошибки? Так было бы проще понять в чём проблема.
Его особо то и нету). Если
a = ui.lineEdit_2.text()
b = ui.lineEdit_3.text()
print(random.randint(int(a), int (b)))
То при нажатии на кнопку ответ выводит в консоль, а если print убрать и вставить ui.label_3.setText(str(random.randint(int(a)),int(b))) или ui.label_3.setText(random.randint(int(a)),int(b))), то при нажатии просто вылетает программа, без каких либо ошибок в консоли.
Ошибка именно где-то в ui.label_3.setText()
потому что если просто сделать ui.label_3.setText("dawda") то при нажатие на кнопку все равно программа вылетает без ошибок
 

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Всё я смог сделать. Всем огромное спасибо кто пытался помочь.
Если что ответом правильным оказалось
a = ui.lineEdit_2.text()
b = ui.lineEdit_3.text()
c = random.randint(int(a),int(b))
ui.label_3.setText(f'{c}')
 

Ketovx

Новичок
Пользователь
Авг 1, 2020
9
2
3
23
RF, KZN
Всё я смог сделать. Всем огромное спасибо кто пытался помочь.
Если что ответом правильным оказалось
a = ui.lineEdit_2.text()
b = ui.lineEdit_3.text()
c = random.randint(int(a),int(b))
ui.label_3.setText(f'{c}')
Так не совсем правильно делать.

Когда вам нужно привести значение к строковому виду, нужно воспользоваться оператором str().
В случае, когда нужно получить шаблон строки, с встроенным значением, используется форматированная строка - f'{}'

В вашем случае получается неявное приведение типа, что является плохим тоном.
 
  • Мне нравится
Реакции: x1de4lt

x1de4lt

Новичок
Пользователь
Авг 5, 2020
8
0
1
Так не совсем правильно делать.

Когда вам нужно привести значение к строковому виду, нужно воспользоваться оператором str().
В случае, когда нужно получить шаблон строки, с встроенным значением, используется форматированная строка - f'{}'

В вашем случае получается неявное приведение типа, что является плохим тоном.
пофиг ) всё работает и хорошо хах.
 

Форум IT Специалистов