Работает в Python2, но не Python3; преобразование двоичного в десятичное [дубликат]

Вы можете сделать это, используя URLSearchParams, поскольку тело запроса и угловой автоматически настроит тип содержимого на application/x-www-form-urlencoded и правильно закодирует тело.

let body = new URLSearchParams();
body.set('username', username);
body.set('password', password);

this.http.post(this.loginUrl, body).map(...);

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

Вам нужно закодировать тело следующим образом:

let body = `username=${username}&password=${password}`;

Вам нужно установить параметры заголовка следующим образом:

this.http.post(this.loginUrl, body, { headers: headers }).map(...);
153
задан Skurmedel 15 August 2009 в 22:51
поделиться

3 ответа

Взгляните на PEP-238 : изменение оператора разделения

Оператор // будет иметь возможность запросить разделение по полу однозначно.

< / BLOCKQUOTE>
215
ответ дан Brandon E Taylor 26 August 2018 в 01:04
поделиться
  • 1
    @JonathanSternberg, за исключением всего кода, написанного для python 2.0. Я чувствую, что роль / и // должна быть отменена, чтобы сохранить обратную совместимость. Кроме того, в большинстве случаев любой другой язык / сохраняет тип. я бы сделал больше смысла, чем // для автоматического преобразования в float, а не /. – thang 11 September 2017 в 20:22

В принятом ответе уже упоминается PEP 238 . Я просто хочу добавить быстрый взгляд за кулисы для тех, кто интересуется тем, что происходит, не читая весь PEP.

Python отображает такие операторы, как +, -, * и / к специальным функциям, например, a + b эквивалентен

a.__add__(b)

Что касается деления в Python 2, по умолчанию используется только /, который отображается на __div__, и результат зависит от типов ввода (например, int , float).

В Python 2.2 была введена функция __future__ division, которая изменила семантику деления следующим образом (TL; DR из PEP 238):

  • / отображается на __truediv__, который должен «возвращать разумную аппроксимацию математического результата деления» (цитата из PEP 238)
  • // отображается на __floordiv__, которая должна возвращаться польский результат /

С Python 3.0 изменения PEP 238 стали поведением по умолчанию, и в объектной модели Python не существует особого метода __div__.

Если вы хотите использовать тот же код в Python 2 и Python 3, используйте

from __future__ import division

и придерживайтесь семантики PEP 238 / и //.

19
ответ дан code_onkel 26 August 2018 в 01:04
поделиться

Надеюсь, что это может помочь кому-то мгновенно.

Поведение оператора разделения в Python 2.7 и Python 3

В Python 2.7: По умолчанию оператор разделения возвращает целочисленный вывод .

, чтобы получить результат в double multiple 1.0 для «divend или divisor»

100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857

В Python 3

// => used for integer output
/ => used for double output

100/35 => 2.857142857142857
100//35 => 2
100.//35 => 2.0    # floating-point result if divsor or dividend real
51
ответ дан Jonas Byström 26 August 2018 в 01:04
поделиться
  • 1
    Спасибо за Ваш ответ. Конечно, это помогает мне :) – user 4 July 2017 в 03:07
  • 2
    Не могли бы вы уточнить? – dangonfast 9 October 2017 в 08:13
  • 3
    Используя это, вы получите int, а не float @dangonfast. – Ashish Ahuja 21 May 2018 в 05:02
Другие вопросы по тегам:

Похожие вопросы: