Подтвердить что ты не робот

Python - проверка нечетных/четных чисел и изменение выходов на размер номера

У меня есть несколько проблем для решения задачи, и я немного застрял. Вопрос заключается в написании программы, в которой пользователь вводит нечетное число (проверьте его нечетно), а затем напечатайте вверху вниз пирамиду звезд на основе размера ввода.

Например, если вы введете 5, оно будет

*****
 ***
  *

Поэтому моя проблема двояка.

1) Как проверить, четный или нечетный? Я попробовал if number/2 == int в надежде, что он может что-то сделать, и интернет говорит мне делать if number%2==0, но это не работает.

2) Как изменить звездочки в середине каждой строки?

Приветствуется любая помощь с любой проблемой.

4b9b3361

Ответ 1

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

Четный или нечетный:

number % 2 == 0

Определенно это очень хороший способ узнать, равно ли ваш номер.

Если вы не знаете %, это значит, что здесь находится остаток деления number на 2. http://en.wikipedia.org/wiki/Modulo_operation

Печать пирамиды:

Первый совет: для печати ***** вы можете сделать print "*" * 5.

Второй совет: для того, чтобы центрировать звездочки, вам нужно выяснить, сколько пробелов нужно писать перед звездочками. Затем вы можете напечатать кучу пробелов и звездочек с print " "*1 + "*"*3

Ответ 2

Решения modulo 2 с% 2 хороши, но для этого требуется деление и вычитание. Поскольку компьютеры используют двоичную арифметику, гораздо более эффективное решение:

# This first solution does not produce a Boolean value. 
is_odd_if_zero = value & 1

# or

is_odd = (value & 1) == 1

# or

is_even = (value & 1) == 0

Ответ 3

Простой, но все же быстрый:

>>> def is_odd(a):
...     return bool(a - ((a>>1)<<1))
...
>>> print(is_odd(13))
True
>>> print(is_odd(12))
False
>>>

Или даже проще:

>>> def is_odd(a):
...   return bool(a & 1)

Ответ 4

1) Как проверить, четный или нечетный? Я попытался "если number/2 == int" в надежде, что он что-то может что-то сделать, и в Интернете мне будет сказано "если число% 2 == 0", но это не работает.

def isEven(number):
        return number % 2 == 0

Ответ 5

if number%2==0

скажет вам, что это даже. Таким образом, нечетные числа будут содержать выражение else. "%" - это знак мод, который возвращает остаток после деления. Поэтому мы говорим, что если число делится на два, мы можем смело предположить это. В противном случае это нечетно (это идеальная корреляция!)

Что касается размещения звездочки, вы хотите добавить звездочки с количеством пространств, скоррелированным по линии, на которой оно находится. В вашем примере

***** line 0
***   line 1
*     line 2

Мы хотим, чтобы пространство было соответственно

0*****
01***
012*

Ответ 6

la = lambda x : "even" if not x % 2 else "odd"

Ответ 7

Я думаю, что самый простой и самый простой способ - это

import math

number = int (input ('Enter number: '))

if number % 2 == 0 and number != 0:
    print ('Even number')
elif number == 0:
    print ('Zero is neither even, nor odd.')
else:
    print ('Odd number')

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

Ответ 8

Что касается распечатки, вот как бы я это сделал, используя Формат спецификации формата Mini Language (раздел: Выравнивание текста и указание ширины):

Как только у вас будет длина, скажите length = 11:

rowstring = '{{: ^{length:d}}}'.format(length = length) # center aligned, space-padded format string of length <length>
for i in xrange(length, 0, -2): # iterate from top to bottom with step size 2
    print rowstring.format( '*' * i )

Ответ 9

существует множество способов проверить, является ли значение int нечетным или четным. Я покажу вам два основных способа:

number = 5

def best_way(number):
    if number%2==0:
        print "even"
    else:
        print "odd"

def binary_way(number):
    if str(bin(number))[len(bin(number))-1]=='0':
        print "even"
    else:
        print "odd"
best_way(number)
binary_way(number)

надеюсь, что это поможет

Ответ 10

Вот мое решение:

def is_even(n):
    r=n/2.0
    return True if r==int(r) else False

Ответ 11

Пример инструкции Дается целое число n, выполняющее следующие условные действия:

  • Если n нечетно, выведите Weird
  • Если n четное и в диапазоне от 2 до 5 включительно, выведите Not Weird
  • Если n чётно и находится в диапазоне от 6 до 20, выведите Weird
  • Если n чётно и больше 20, выведите Not Weird
import math
n = int(input())

if n % 2 ==1:
    print("Weird")
elif n % 2==0 and n in range(2,6):
    print("Not Weird")
elif n % 2 == 0 and n in range(6,21):
    print("Weird")
elif n % 2==0 and n>20:
    print("Not Weird")

Ответ 12

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

n = int(input('Enter integer : '))
    if n % 2 == 3'8huhubuiiujji':
        print('digit entered is ODD')
    elif n % 2 == 0 and 2 < n < 5:
        print('EVEN AND in between [2,5]')
    elif n % 2 == 0 and 6 < n < 20:
        print('EVEN and in between [6,20]')
    elif n % 2 == 0 and n > 20:
       print('Even and greater than 20')

и так далее...

Ответ 13

def main():
    n = float(input('odd:'))
    while n % 2 == 0:
        if n % 2 == 1:
            break
        n = float(input('odd:'))


    for i in range(int((n+1)/2)):
        print(' '*i+'*'*int((n-2*i))+' '*i)

main()

#1st part ensures that it is an odd number that was entered.2nd part does the printing of triangular

Ответ 14

Некоторые из решений здесь ссылаются на время, затрачиваемое на различные "четные" операции, в частности, n % 2 сравнению с n & 1, без систематической проверки того, как это изменяется в зависимости от размера n, который оказывается прогнозирующим по скорости.

Короткий ответ: если вы используете числа разумного размера, обычно <1e9, это не имеет большого значения. Если вы используете большие числа, то, возможно, вы захотите использовать побитовый оператор.

Вот сюжет, чтобы продемонстрировать, что происходит (с Python 3.7.3, под Linux 5.1.2):

python3.7 benchmark

В основном, когда вы нажимаете "произвольную точность", вещи становятся все медленнее для модуля, оставаясь постоянными для побитовой операции. Также обратите внимание на множитель 10**-7, то есть я могу делать ~ 30 миллионов (маленькое целое) проверок в секунду.

Вот тот же сюжет для Python 2.7.16:

python2.7 benchmark

который показывает оптимизацию, которая вошла в более новые версии Python.

У меня есть только эти версии Python на моей машине, но я могу запустить их для других версий. Есть 51 n между 1 и 1e100 (равномерно распределены по логарифмической шкале), для каждой точки я делаю эквивалент:

timeit('n % 2', f'n={n}', number=niter) 

где niter рассчитывается так, чтобы timeit заняло ~ 0,1 секунды, и это повторяется 5 раз. Немного неуклюжая обработка n и N должна гарантировать, что мы также не проводим сравнительный анализ поиска глобальных переменных, который медленнее, чем локальные переменные. Среднее значение этих значений используется для рисования линии, а отдельные значения отображаются в виде точек.