Collatz Гипотеза и печатные заявления - PullRequest
0 голосов
/ 31 октября 2011

Я пытаюсь создать простую программу, чтобы применить утверждение гипотезы Коллатца к целому числу, которое пользователь может ввести, у меня есть:

def collatz(n):
    print n,
    if n % 2 ==0:
        n = n / 2
    elif n == 0:
        Print "Collatz Conjecture true for" , 'n'
    else:
        n = n *3 + 1

input("\n\nInsert a positive integer:")
def collatz(n)

Однако там говорится, что в строке есть синтаксическая ошибка:

Print "Collatz Conjecture true for" , 'n'

Я не вижу, какая ошибка в этой строке.

Кроме того, так как я еще не смог проверить это, похоже, это будет работать нормально?

Ответы [ 4 ]

3 голосов
/ 31 октября 2011

Хорошо, ваша синтаксическая ошибка в том, что python чувствителен к регистру, поэтому вам нужно print вместо Print.

Но у вас больше проблем:

  • 'n' печатает строку n. Я думаю, что вы хотите, чтобы n напечатал значение переменной (или, если нет, то вы можете просто сделать одну строку "... true для n").

  • Наконец (я думаю), чтобы запустить функцию collatz, вам не нужен def; это только для определения.

3 голосов
/ 31 октября 2011

Python чувствителен к регистру.Используйте «print», а не «Print».

2 голосов
/ 31 октября 2011

Больше проблем:

  1. Условие остановки должно быть n == 1, а не n == 0.
  2. Вы должны повторяться или повторяться, поскольку вы делаете только один шаг.
  3. Проверьте ввод, убедитесь, что это действительно положительное число.
0 голосов
/ 04 апреля 2012
 def collatz_steps(n):
    steps=0
    if n==1:
        return 0 
    else:
        while n!=1:
            if n%2==0:
                n=n/2
                steps+=1
            else:
                n = 3*n+1
                steps+=1
        return steps
...