所以我對代碼進行了編程,每當給出輸入數字時,在對數字的每個數字進行平方并將平方數字的值相加后,輸出將始終只顯示“1”或“4”。這是我的代碼,
number = int()
sum_of_digits = 0
x = ''
while x not in ['1', '4']:
for digit in str(number):
sum_of_digits = (int(digit)**2)
x = str(sum_of_digits)
number = sum_of_digits
sum_of_digits = 0
print(x)
def IsHappy(x):
if x == '1':
return 'True'
else:
return 'False'
所以基本上一旦你運行我的代碼,你會得到 1 或 4 和真或假,1 為真,4 為假,現在我想要做的是定義一個變數,將列印出所有數字(是的,無限多個數字) ) 滿足條件“真”,我該怎么做??
uj5u.com熱心網友回復:
無限回圈的解釋0:
如果我們從0它開始回圈,就會出現無限回圈狀態,因為它永遠不會匹配x not in ['1', '4']這個條件。為了克服這個問題,我們可以忽略0或設定一個條件來檢查數字是否0存在。
嘗試這個:
def GetX(number):
sum_of_digits = 0
x = ''
while x not in ['1', '4']:
for digit in str(number):
sum_of_digits = (int(digit)**2)
x = str(sum_of_digits)
number = sum_of_digits
sum_of_digits = 0
return x
def IsHappy(x):
if x == '1':
return True
else:
return False
for x in range(1, 101):
if IsHappy((GetX(x))):
print(x)
# or store happy number in a list
res = [x for x in range(1, 101) if IsHappy((GetX(x)))]
print(res)
輸出:
1
7
10
13
19
23
28
31
32
44
49
68
70
79
82
86
91
94
97
100
[1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100]
uj5u.com熱心網友回復:
將計算數字總和的代碼放在函式中。然后,您可以在回圈中呼叫該函式。
def get_sum_of_digits(number):
x = ''
while x not in ['1', '4']:
sum_of_digits = sum(int(digit)**2 for digit in str(number))
x = str(sum_of_digits)
return x
def IsHappy(x):
if x == '1':
return 'True'
else:
return 'False'
for i in range(1, 100):
if IsHappy(get_sum_of_digits(i)) == 'True':
print(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311478.html
