2016-09-02 3 views
0

Я очень новичок в Python, но я искал решение, и я в тупике.Как указать типы аргументов?

Я определил функцию, которая принимает несколько аргументов:

def func(arg1, arg2, arg3): 

Первый аргумент будет строкой, но в ближайшие два всегда будет целыми числами. Мне нужно построить следующий цикл for.

for x in range(0, arg2/2): 

Проблема заключается в том, что arg2 является недобросовестный типа float и в результате я получаю следующее:
TypeError: 'float' object cannot be interpreted as an integer

Я попытался:

for x in range(0, int(arg2)/2): 

Но то же самое происходит из-за некоторая причина. Как я могу указать, что arg2 следует принимать как целое число, или как я могу переинтерпретировать его как целое число?

ответ

3

В Python 3.x:

Когда вы arg2/2 вы получите поплавок. Если вы хотите, чтобы ИНТ попробовать arg2 // 2

Например 2/2 = 1.0 но 2 // 2 = 1

Но вы потеряете точность, делая это, но так как вы хотите Int Я предполагаю, что вы хотите, чтобы округлить вверх или вниз в любом случае.

В python 2.x/является делением по умолчанию по умолчанию; чтобы получить плавающее подразделение, вам нужно было убедиться, что одно из чисел было плавающим.

Отредактировано: Как отметил @martineau, как в Python 2.x, так и 3.x, если числитель или знаменатель является поплавком,/будет делать float-деление и // приведет к поплавковому результату. Чтобы обойти это брось в целое или убедиться, что это ква ... 2.0/2 = 1.0 и 2.0 // 2 = 1.0 и 2/2.0 = 1.0 и 2 // 2.0 = 1.0 2.5/2 = 1.25 и 2.0 // 2 = 1.0 и 2/2.5 = 0.8 и 2 // 2.5 = 0.0

+0

Спасибо - могли бы вы кратко объяснить разницу между/и//? У меня есть опыт кодирования, но не в python. – Nate

+0

@Nate // is Floor Division – galaxyan

+0

@Nate Вы можете найти ответ здесь: http://stackoverflow.com/questions/183853/in-python-what-is-the-difference-between-and-when-used- for-division Но tl dr/является делением с плавающей запятой, а // является int-подразделением. В основном // заставляет вас использовать int вместо общего float. – MooingRawr

0

попытка обогнуть для всей формулы

for x in range(int(arg2/2)) 
Смежные вопросы