gpt4 book ai didi

Python:将函数的结果重新插入自身,直到它达到 1,或者如果它永远循环 break 和 print(sad)

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:13 25 4
gpt4 key购买 nike

我刚开始学习 Python 几天,所以请原谅我的粗暴工作。

def sum_digits(n):
s = 0
while n:
s += n % 10
n //= 10
return s

def IsHappy(x):
sum_digits(x**2)==1
while True:
print("happy number")
break
while False:

基本上,我想要一个函数来测试一个数字是否是一个快乐的数字 https://en.wikipedia.org/wiki/Happy_number如果第一次尝试的值为 1,我想出了如何让它说“快乐数字”。但是,如果第一次尝试时该值不是 1,我希望它对数字进行平方,然后对数字求和。我希望它重复直到它得到 1。如果它永远循环,我希望它打印(“不快乐的数字”)。

谢谢。

最佳答案

您的第一个问题是您不知道幸福的含义——您是对平方的数字求和,而不是对数字的平方求和。第二个问题是你的不快乐是无限的——除非你对你的数字进行某种循环/循环检测,否则你的无限循环永远不会产生不快乐或任何结果。 Python 集非常适合此目的:

def sum_digits_squared(number):
sum_squares = 0

while number:
sum_squares += (number % 10) ** 2
number //= 10

return sum_squares

def is_happy_number(number):
seen_set = set() # loop detection

while True:
sum_squares = sum_digits_squared(number)

if sum_squares == 1: # we reached 1 (happy)
return True
if sum_squares in seen_set: # we have a loop (unhappy)
return False

seen_set.add(sum_squares)

number = sum_squares

happiness = { True: "happy :-)", False: "not happy :-(" }

for n in range(1, 101):
print(n, "is", happiness[is_happy_number(n)])

第三个问题是您的代码无法在逻辑上协同工作。但这会随着时间的推移而到来,伴随着真正的幸福。

关于Python:将函数的结果重新插入自身,直到它达到 1,或者如果它永远循环 break 和 print(sad),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com