объединение переменных (букв и цифр) в вопрос в python - PullRequest
4 голосов
/ 26 марта 2020

Я делаю задание. Что это не важно - этот вопрос должен быть очень простым. Мне нужно сделать случайно сгенерированный вопрос. Чтобы сделать это для добавления, мой код:

num1 = (random.randint(0,12))
num2 = (random.randint(0,12))
question = (num1 + "" + "+" + "" + num2)
print(question)

Я получаю ошибку:

question = (num1 + "" + "+" + "" + num2) 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Мне кажется, я понимаю, в чем проблема, но я не знаю, как ее исправить , Буду благодарен за любую помощь. Я использую python -idle 3.8

Ответы [ 4 ]

3 голосов
/ 26 марта 2020

Вы пытаетесь добавить int с помощью str, что недопустимо, вы можете решить эту проблему следующими способами:

>>> num1 = (random.randint(0,12))
>>> num2 = (random.randint(0,12))
>>> question = (str(num1) + "" + "+" + "" + str(num2))
# or for python 3.6+ use f-strings [1]
>>> question = f"{num1} + {num2}"

Также, если вы добавляете "", это бесполезно, так как это пустые строки. Вместо этого либо используйте " ", либо добавьте его к самому оператору +, например: " + ".


Ссылки:

  1. f-строк
2 голосов
/ 26 марта 2020

Вам нужно преобразовать эти два случайно сгенерированных числа с помощью функции str ().

Итак, ваш исправленный код будет выглядеть так:

num1 = (random.randint(0,12))
num2 = (random.randint(0,12))
question = (str(num1) + " " + "+" + " " + str(num2))
print(question)

Кроме того, вы забыли пробелы во время конкатенации это приведет к 2 + 3 и т. д.

В следующий раз попробуйте найти полученную ошибку в Google и попытаться понять ее. Он говорит вам, что вы не можете выполнить операцию с оператором '+' для двух разных типов: 'int' и 'str' (эквивалентно, для целых чисел и строк). Эти ошибки не просто что-то вроде китайского, они действительно говорят вам о вашей ошибке. Пусть отладчик будет твоим другом! :)

2 голосов
/ 26 марта 2020

Вы не можете объединить int с ул. Есть много способов добиться этого, вы можете явным образом преобразовать целые числа в строки, или вы можете сохранить их в списке и распаковать список при печати, или я лично предпочитаю использовать формат питонов f-string.

import random
num1 = (random.randint(0,12))
num2 = (random.randint(0,12))
question = (str(num1) + " " + "+" + " " + str(num2))
print(question)

question = (num1, "+", num2)
print(*question)

question = f"{num1} + {num2}"
print(question)

ВЫХОД

7 + 2
7 + 2
7 + 2
2 голосов
/ 26 марта 2020

Вам необходимо типизировать целые числа в num1 и num2 в строки типа.

num1 = (random.randint(0,12))
num2 = (random.randint(0,12))
question = (str(num1) + " " + "+" + " " + str(num2))
print(question)

Вы не можете добавить тип int и строку типа, что и привело к ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...