Jestem (bardzo) nowy do wszystkich tego programowania rzeczy i potrzebuję pomocy w programie, który robię w Pythonie 3. Jest to zaprojektowany w tej chwili, aby znaleźć, ile liczb między 1 a 10 jest podzielne przez 5. To to moje podejście:

def five():
    a = 0
    b = 0
    c = 0
    while a <= 9:
        a = a + 1
        b = a / 5
        if type(b) == int and b is not 0:
            c = c + 1
        else:
            pass
    print c

W tym przypadku drukowanie "6".

Problem polega na tym, że, jak już wiesz, w Pythonie Numer 1.0 nie jest liczbą całkowitą. Jedyną rzeczą, którą chcę, jest sprawić, by Python znała wszystkie liczby z 0 po kropce są liczbami całkowitymi lub znajdź interaktywny język programowania, który robi, lub znaleźć inne podejście.

Dzięki!

2
User682 5 listopad 2011, 06:24

5 odpowiedzi

Najlepsza odpowiedź

Prośba o wartość type() wartości w Pythonie nie powie, czy jest to okrągły liczbę całkowitą, czy nie. Wynikowe typu obliczenia nie zmienia typu w zależności od odpowiedzi. (Ale w Pythonie 2 rodzaj odpowiedzi w podziale zależy od rodzaju wejść. W Pythonie 3, typ po / jest zawsze float, podczas gdy typ po // zależy od rodzaju wejść.)

Aby przetestować liczbę całkowitą podzielną przez 5, użyj operatora Modulo:

if a % 5 == 0:
    c = c + 1

Unikaj również przy użyciu operatora is z liczbami całkowitymi. Użyj b != 0, aby porównać z zero, zamiast {x2}} (patrz Python" jest "operator zachowuje się niespodziewanie z liczbami całkowitymi dla szczegółów Gory).

6
Community 23 maj 2017, 11:55

Nieco inny sposób na to:

def five():
    count = 0
    for i in range(1, 10):
        if i%5 == 0:
            count += 1
    print (count, end='')
  1. Użyj generatora, aby wygenerować liczby
  2. Użyj operatora modułu, aby sprawdzić resztę po dywizji
  3. Python 3 wykorzystuje wsporniki do drukowania.
1
Abizern 5 listopad 2011, 02:33

Musisz użyć operatora MOD '%'. Przykład

10% 5 = 0

6% 5 = 1

Odkąd jesteś Newbie, oto krótki fragment, jak możesz potrzebować pomocy.

count = 0
for i in range(1,10):
    if i % 5 == 0:
        count += 1
print count
1
Alvin K. 5 listopad 2011, 02:39

Istnieje metoda, aby określić, czy float float jest integralną (tj. x == int(x)):

>>> (1.0).is_integer()
True
>>> (1.1).is_integer()
False

Więc możesz zastąpić type(b) == int za pomocą b.is_integer(), a skrypt będzie działał dobrze.

1
Raymond Hettinger 5 listopad 2011, 04:07

Co powiesz na jeden liniowiec:

sum([0 if x%5 else 1 for x in range(1,10)])
0
Mike 5 listopad 2011, 03:01