這裏是作業:在你的程序中,你將在用戶定義的範圍內驗證這個猜想。您將提示用戶輸入範圍的第一個號碼和最後一個號碼。然後您將檢查兩個數字是否都是正值(> 0),並且用戶定義範圍中的第一個數字小於或等於該範圍中的最後一個數字。如果這些條件中的任何一個或多個失敗,請繼續提示用戶以正確的順序輸入正數。python嵌套循環雹子序列的範圍
一旦範圍的開始和結束已被驗證,您的程序將計算該範圍內每個數字(包括端點)的週期長度。您的程序將打印出具有最大循環長度和該循環長度的數字。
你的樣品會議將是這樣的:
Enter starting number of the range: 1
Enter ending number of the range: 5
的3號有7 最長的週期長度在程序中所有的計算將在功能main()
。您必須使用嵌套循環來獲得結果。
這裏是我有:
def main():
#prompt user to enter starting number of range
lo = int (input("Enter starting number of the range: "))
#prompt user to enter starting number of range again if input was negative
while (lo < 1):
print("Error, enter positive number")
lo = int(input("Enter starting number of the range: "))
#prompt user to enter ending number of range
hi = int(input("Enter ending number of the range: "))
#prompt user to enter ending number of range again if input was negative
while (hi < 1):
print("Error, enter positive number")
hi= int(input("Enter ending number of the range: "))
#set max cycle length and max number
max_n = 0
max_length = 0
#Iterate all numbers in the range
for n in range(lo, hi + 1):
cycle_length = 0
while (n != 1):
if (n % 2 == 0):
n = n/2
max_length += 1
cycle_length = len(n)
else:
n = 3 * n + 1
max_length += 1
cycle_length = len(n)
if n == 1:
print (n)
if (cycle_length > max_length):
max_length = cycle_length
max_n = n
#print output
print('The number', max_n, 'has the longest cycle length of', str(max_length))
有一個邏輯錯誤在這裏的某個地方,我無法找到。 當我嘗試將它稱爲python時,它只是跳過一行並忽略我的文件。
感謝您的幫助!
它哪一行起牀?如果有的話,你的輸出是什麼? –
您正在嘗試創建'len(n)',但n是一個整數,所以它會給你一個錯誤 –