ATBSWP,第 3 章,Collatz 序列。为什么当条件已经满足时 while 循环 运行?
ATBSWP, Chapter 3, Collatz Sequence. Why does the while loop run when condition is already met?
如果用户输入数字 1,那么 while 循环不应该 运行 因为 1 = 1,对吗?
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
result = 3 * number + 1
print(result)
return result
try:
n = input('Give me a number: ') #user inputs number, saved to n
while n != 1: #function repeats while number is not equal to 1
n = collatz(int(n)) #this is what actually calls the function
except ValueError:
print('Please use whole numbers only.')
最初, n 的类型被认为是 str 所以 "1" != 1
因此条件满足。
看这个例子https://code.hackerearth.com/0acb47j
如果用户输入数字 1,那么 while 循环不应该 运行 因为 1 = 1,对吗?
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
result = 3 * number + 1
print(result)
return result
try:
n = input('Give me a number: ') #user inputs number, saved to n
while n != 1: #function repeats while number is not equal to 1
n = collatz(int(n)) #this is what actually calls the function
except ValueError:
print('Please use whole numbers only.')
最初, n 的类型被认为是 str 所以 "1" != 1 因此条件满足。 看这个例子https://code.hackerearth.com/0acb47j