Collatz 循环结构
Collatz Loop Structure
请帮助我理解我做错了什么。问题是
The Collatz Sequence
Write a function named collatz() that has one parameter named number. If number is even, then collatz() should print number // 2 and return this value. If number is odd, then collatz() should print and return 3 * number + 1.
然后编写一个程序,让用户输入一个整数,并在该数字上不断调用 collatz() 直到函数 return 的值为 1。(令人惊讶的是,这个序列实际上适用于任何整数——迟早,使用这个数列,你会得到 1!即使是数学家也不确定为什么。你的程序正在探索所谓的 Collatz 数列,有时被称为“最简单的不可能的数学问题。”)
记得使用 int() 函数将 return 值从 input() 转换为整数;否则,它将是一个字符串值。
提示:如果number %2 == 0,则为偶数,如果number %2 == 1,则为奇数
def collatz(number):
if number%2==0:
print(number//2)
else:
print(3*number+1)
x = int(input('print num'))
while TRUE:
if collatz(x)!=1:
break
重复 -
正如其他人在评论中所述,您的函数 collatz()
必须 return 一个整数 也 ,才能再次输入 collatz()
.
在您已经完成的基础上,我们可以让函数 collatz_sequence(x)
重复调用 collatz()
以获得所需的结果:
def collatz(x):
if x % 2 == 0:
a = x//2
else:
a = 3*x+1
print(a)
return a
def collatz_sequence(x):
print(x)
while x!=1:
x=collatz(x)
这是一个示例输出:
>>> collatz_sequence(6)
6
3
10
5
16
8
4
2
1
您必须在函数 collatz(num)
:
中打印和 return
def collatz(number):
"""prints and returns the next number in the Collatz sequence
"""
if number % 2 == 0:
next_collatz_number = number // 2
else:
next_collatz_number = 3 * number + 1
print(next_collatz_number)
return next_collatz_number
x = int(input('print num'))
while True:
x = collatz(x)
if x == 1:
break
如果你想对抗,我就是这样写的同样的代码
# Write a function named collatz() that has one parameter named number. If
# number is even, then collatz() should print number // 2 and return this value.
# If number is odd, then collatz() should print and return 3 * number + 1
# Then write a program that lets the user type in an integer and that keeps
# calling collatz() on that number until the function returns the value 1.
# Add try and except statements to the previous project to detect whether the
# user types in a noninteger string. Normally, the int() function will raise a
# ValueError error if it is passed a noninteger string, as in int('puppy'). In the
# except clause, print a message to the user saying they must enter an integer.
integernuber = False
while not integernuber:
try:
number = int(input('Type a number: '))
integernumber = True
except:
print('Please entere an integer number')
def collatz():
global number
if (number % 2) == 0:
return number / 2
number = (number / 2)
elif (number % 2) == 1:
return 3 * number + 1
number = (3 * number + 1)
else:
return
while collatz() <= 1:
number = int(collatz())
print(number)
希望对您有所帮助
try:
number = int(input('Enter a number:'))
while number != 1:
number = collatz(number)
except ValueError:
print('Enter a valid integer')
def collatz(num):
if num % 2 == 0:
print(str(num // 2))
return num // 2
else:
print(str(3 * num + 1))
return (3 * num + 1)
在这段代码中,我已经匹配了他们的约束(整数约束)并返回了值。我在 try 块中使用了简单的递归来获得所需的输出。
请帮助我理解我做错了什么。问题是
The Collatz Sequence Write a function named collatz() that has one parameter named number. If number is even, then collatz() should print number // 2 and return this value. If number is odd, then collatz() should print and return 3 * number + 1.
然后编写一个程序,让用户输入一个整数,并在该数字上不断调用 collatz() 直到函数 return 的值为 1。(令人惊讶的是,这个序列实际上适用于任何整数——迟早,使用这个数列,你会得到 1!即使是数学家也不确定为什么。你的程序正在探索所谓的 Collatz 数列,有时被称为“最简单的不可能的数学问题。”)
记得使用 int() 函数将 return 值从 input() 转换为整数;否则,它将是一个字符串值。
提示:如果number %2 == 0,则为偶数,如果number %2 == 1,则为奇数
def collatz(number):
if number%2==0:
print(number//2)
else:
print(3*number+1)
x = int(input('print num'))
while TRUE:
if collatz(x)!=1:
break
重复 -
正如其他人在评论中所述,您的函数 collatz()
必须 return 一个整数 也 ,才能再次输入 collatz()
.
在您已经完成的基础上,我们可以让函数 collatz_sequence(x)
重复调用 collatz()
以获得所需的结果:
def collatz(x):
if x % 2 == 0:
a = x//2
else:
a = 3*x+1
print(a)
return a
def collatz_sequence(x):
print(x)
while x!=1:
x=collatz(x)
这是一个示例输出:
>>> collatz_sequence(6)
6
3
10
5
16
8
4
2
1
您必须在函数 collatz(num)
:
def collatz(number):
"""prints and returns the next number in the Collatz sequence
"""
if number % 2 == 0:
next_collatz_number = number // 2
else:
next_collatz_number = 3 * number + 1
print(next_collatz_number)
return next_collatz_number
x = int(input('print num'))
while True:
x = collatz(x)
if x == 1:
break
如果你想对抗,我就是这样写的同样的代码
# Write a function named collatz() that has one parameter named number. If
# number is even, then collatz() should print number // 2 and return this value.
# If number is odd, then collatz() should print and return 3 * number + 1
# Then write a program that lets the user type in an integer and that keeps
# calling collatz() on that number until the function returns the value 1.
# Add try and except statements to the previous project to detect whether the
# user types in a noninteger string. Normally, the int() function will raise a
# ValueError error if it is passed a noninteger string, as in int('puppy'). In the
# except clause, print a message to the user saying they must enter an integer.
integernuber = False
while not integernuber:
try:
number = int(input('Type a number: '))
integernumber = True
except:
print('Please entere an integer number')
def collatz():
global number
if (number % 2) == 0:
return number / 2
number = (number / 2)
elif (number % 2) == 1:
return 3 * number + 1
number = (3 * number + 1)
else:
return
while collatz() <= 1:
number = int(collatz())
print(number)
希望对您有所帮助
try:
number = int(input('Enter a number:'))
while number != 1:
number = collatz(number)
except ValueError:
print('Enter a valid integer')
def collatz(num):
if num % 2 == 0:
print(str(num // 2))
return num // 2
else:
print(str(3 * num + 1))
return (3 * num + 1)
在这段代码中,我已经匹配了他们的约束(整数约束)并返回了值。我在 try 块中使用了简单的递归来获得所需的输出。