Как использовать булевскую переменную 'и' в Python [дубликат]

Если нет причин, по которым вы хотите использовать% .2f для сканирования, сработает только использование% f

#include 
#include 

#define PI 3.14
int main() {
    float r,a,c;
    printf("enter radius: \n");
    scanf("%f",&r);
    c = r * PI * 2;
    a = r * r * PI;
    printf("area:%.2f circumference:%.2f \n",c,a );
    return 0;
}

Пример:

daniel@daniel-FX503VM:~/Documents/test$ ./zero 
enter radius: 
1
area:6.28 circumference:3.14 

.2 в printf спецификатор формата печати, и он не должен влиять на scanf

Когда вы помещаете .2 в scanf, на самом деле это поле ширины, которое указывает максимальное количество символов, которые нужно прочитать в текущая операция чтения (опционально). Однако в этом контексте .2 символа в качестве ширины не имеют смысла, поскольку ширина должна быть целым числом.

Если на самом деле вы пытаетесь прочитать только 2 символа, вы можете сказать

scanf("%2f", &r);

Но имейте в виду, что «.» также будет считаться как символ. Если вы просто хотите, чтобы выходные данные были двумя десятичными знаками, то предложенного выше кода должно быть достаточно. Если вы хотите округлить его внутри, я бы посоветовал вам прочитать этот пост

43
задан Eric Leschinski 8 December 2013 в 06:35
поделиться

6 ответов

Попробуйте это:

i = 5
ii = 10
if i == 5 and ii == 10:
      print "i is 5 and ii is 10"

Редактирование : О, и Вам не нужна та точка с запятой на последней строке (редактирование для удаления его из моего кода).

68
ответ дан Mizipzor 26 November 2019 в 22:32
поделиться

Как указано, "&"; в Python выполняет поразрядное и операцию, как это делает в C#. and соответствующий эквивалент && оператор.

, Так как мы имеем дело с булевскими переменными (i == 5 True и ii == 10, также True), можно задаться вопросом, почему это или не работало так или иначе (Верный рассматриваемый, поскольку целочисленное количество должно все еще означать Истинный & Верный Истинное значение), или выдайте исключение (например, путем запрещения битовых операций на булевых типах)

, причиной является приоритет оператора." and" оператор связывает более свободно, чем ==, таким образом, выражение: "i==5 and ii==10" эквивалентно: "(i==5) and (ii==10)"

Однако поразрядно & имеет более высокий приоритет, чем" ==" (так как Вы не хотели бы, чтобы выражения как" a & 0xff == ch" означали" a & (0xff == ch)"), таким образом, выражение будет на самом деле интерпретироваться как:

if i == (5 & ii) == 10:

, Который использует объединение в цепочку оператора Python для значения: делает значение ii, внесенного с 5 равными и я и 10. Очевидно, это никогда не будет верно.

Вы на самом деле получили бы (по-видимому) правильный ответ при включении скобок для принуждения приоритета, таким образом:

if (i==5) & (ii=10)

заставил бы оператор быть распечатанным. Это - неправильный поступок, однако -" &" имеет многих другая семантика к" and" - (приоритет, короткий-cirtuiting, поведение с целочисленными аргументами и т.д.), таким образом, удачно, что Вы поймали это здесь вместо того, чтобы дурачиться, пока это не произвело менее очевидные ошибки.

27
ответ дан Brian 26 November 2019 в 22:32
поделиться

Корректный оператор, который будет использоваться, является ключевыми словами 'или' и 'и', которым в Вашем примере, корректный способ выразить это было бы:

if i == 5 and ii == 10:
    print "i is 5 and ii is 10"

можно отослать детали в раздел "Boolean Operations" в ссылке языка .

15
ответ дан Seh Hui Leong 26 November 2019 в 22:32
поделиться

Можно также протестировать их как пару.

if (i,ii)==(5,10):
    print "i is 5 and ii is 10"
7
ответ дан fulmicoton 26 November 2019 в 22:32
поделиться

& используется для поразрядного сравнения. используйте and вместо этого. и btw, Вам не нужна точка с запятой в конце оператора печати.

6
ответ дан SilentGhost 26 November 2019 в 22:32
поделиться

В Python используйте and вместо && как это:

#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
    print "both are true";

Это печатает:

both are true
2
ответ дан Eric Leschinski 26 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

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