2017-02-20 46 views
-1

Я, вероятно, просто занимаюсь этим неправильно, но в строке 2 я пытаюсь вычесть 2 пользовательских ввода в пределах строки печати.Как вычесть 2 целых числа внутри строки

BTW это только для игры с суммой, где пользователь выбирает сумму и идет первым, а затем играет на компьютере.

def setup(startamt, userturn): 
    print(str("there are " + startamt - userturn + " balls left")) 

def main(): 
    startamt = input("How many balls do you want to start with?(15 or more) ") 
    userturn = input("How many balls will you take?(1-4) ") 
    setup(startamt, userturn) 
+0

Вы должны бросить 'startamt' и' 'userturn' к int', в настоящее время они являются' str' типа – ZdaR

+0

@Zdar, почему вы отвечаете в комментариях и не в разделе «Ваш ответ»? –

+0

@MaksimKneller Некоторые вопросы содержат незначительные ошибки или исправления, которые могут быть объяснены в однострочном формате. Поэтому я предпочитаю раздел комментариев и сохраняю раздел «Ответы» по специальным вопросам;) – ZdaR

ответ

0

В вашей второй строке startamt - userturn каждый оценивается как строки.

Вы можете сделать:

print("there are " + int(startamt) - int(userturn) + " balls left")) 

или с помощью строки форматирования, которая является более Pythonic:

print("there are {} balls left".format(int(startamt) - int(userturn))) 
+0

'startamt' и' userturn' являются строками. – Daniel

+0

@ Даниэль, спасибо, я обновился, чтобы отличить как ints. –

+0

@JoshP, вы бросали каждый из них в int()? Можете ли вы отредактировать свой пост и добавить свой новый код? –

1

Первая проблема заключается в том, что input() возвращает строку (str) объект, поэтому, чтобы сделать вам необходимо преобразовать их в целые числа (int()) или с плавающей запятой (float()).

Поскольку вы находитесь на 3.6, вы можете использовать Литературная строка интерполяции. Например:

startamt = "52" 
userturn = "9" 
print(f"there are {str(int(startamt) - int(userturn))} balls left") 

В предыдущем f указывает, что мы используем интерполяцию, что делается внутри { }.

+0

спасибо, я случайно солгал, я использую 3.5 –

+0

@JoshP: все в порядке, у вас есть эта функция, чтобы с нетерпением ждать :-) – cdarke

0

Это похоже на работу

def setup(startamt, userturn): 

    print("there are", str((int(startamt) - int(userturn))), "balls left" 

def main(): 
    startamt = input("How many balls do you want to start with?(15 or more) ") 
    userturn = input("How many balls will you take?(1-4) ") 
    setup(startamt, userturn) 


main()