#python
#python
Вопрос:
Это мой код:
snumA = random.sample([4,8,3], 1)
snumB = random.sample([7,2,6], 1)
snumC = random.sample([1,5,9], 1)
sgnA = random.choice([' ','-','/','*'])
sgnB = random.choice([' ','-','/','*'])
sgnC = random.choice([' ','-','/','*'])
if sgnA == '-' :
sum1 = snumA - bnumA
print 'minus'
if sgnA == '/' :
sum1 = snumA / bnumA
print 'divide'
Всякий раз, когда я запускаю этот код, я получаю сообщение об ошибке, сообщающее мне, что мои операнды являются списками, а не целыми числами. Я искал везде и до сих пор не знаю, что делать. Не могли бы вы мне помочь, пожалуйста?
Комментарии:
1.
random.sample
выдает список. Может быть, вы хотелиrandom.choice
.
Ответ №1:
Изменить на :
snumA = random.choice([4,8,3])
что даст вам int
вместо a list
. Чтобы лучше понять, ошибка здесь заключается в том, что вы пытаетесь использовать списки (причина random.sample
возвращает результат типа списка) как целые числа для выполнения арифметических операций, что является false .
С другой стороны random.choice
, делает то, что вы хотите, но возвращает int
тип result — так что вы не получите ошибку.
Ответ №2:
Проблема snumA = random.sample([4,8,3], 1)
в том, что возвращает список из одного элемента (например: [3] ). Вместо этого вы можете сделать следующее: либо использовать snumA = random.choice([4,8,3])
, который возвращает непосредственно целое число. Или вы получаете доступ к первому элементу вашего списка с snumA[0]
помощью или напрямую snumA = random.sample([4,8,3], 1)[0]
Ответ №3:
- Как предлагалось ранее, используйте random.choice
- bnumA не определен. Приведенный ниже код предполагает, что вы имели в виду snumB
Итак, код, который вы ищете, может быть:
import random
snumA = random.choice([4,8,3])
snumB = random.choice([7,2,6])
snumC = random.choice([1,5,9])
operators = {' ':'Plus', '-':'Minus', '/':'Division','*':'Multiplication'}
sgnA = random.choice(list(operators.keys()))
sgnB = random.choice(list(operators.keys()))
sgnC = random.choice(list(operators.keys()))
print(eval(str(snumA) sgnA str(snumB)))
print(operators[sgnA])