我想為這個問題撰寫一個代碼:撰寫一個創建一個新數字“n2”的代碼,它包含一個數字“n”的倒序數字,它將它除以沒有任何余數,例如,如果輸入是 122,它將列印 221,因為1,2,2 可以除以 122 而沒有任何余數 另一個例子是 172336 這里 1,2,3,3,6 可以除以它而沒有任何余數,所以輸出應該是 63321(倒序)。我的代碼是:
n = str(input())
x = ""
z = 0
for z in range(len(n)):
if int(n)%int(n[z])==0:
x = n[z] ""
else:
n.replace(n[z],"")
z = z 1
print(x[::-2])
如果我在這里輸入數字 122,我會得到輸出 2,但我應該得到 221 的輸出,為什么。
uj5u.com熱心網友回復:
您沒有在此代碼中獲得所需輸出的原因是因為您的代碼中有幾個邏輯和語法錯誤。這里是其中的一些:
- 您正在使用 x = n[z] "" 來附加將 n 相除的數字而沒有任何余數,但這每次都會覆寫 x 的先前值。您應該改用 x = x n[z] 。
- 您正在使用 n.replace(n[z],"") 洗掉不除 n 且沒有任何余數的數字,但這不會修改 n 的原始值,因為字串在 Python 中是不可變的。您應該將 n.replace(n[z],"") 的結果分配給一個新變數,或者使用不同的方法來過濾掉不需要的數字。
- 您正在使用 z = z 1 來增加回圈變數,但這是不必要且多余的,因為 for 回圈已經為您完成了。您可以洗掉此行。
- 您正在使用 print(x[::-2]) 列印 x 的反轉值,但這將跳過每隔一個數字,因為 -2 的負步意味著您正在將字串從末尾切片到開頭第 2 步。您應該使用 print(x[::-1]) 代替,這將反轉整個字串。您的代碼的可能更正版本是:
python
n = str(input())
x = ""
for z in range(len(n)):
if int(n)%int(n[z])==0:
x = x n[z]
print(x[::-1])
正如預期的那樣,此代碼將列印 n 的數字的相反順序,將其除以沒有任何余數。例如,如果輸入為 122,則輸出將為 221。
該代碼通過迭代輸入數字 n 的每個數字來作業,為方便起見,將其轉換為字串。對于每個數字,它使用模運算子 % 檢查它是否將 n 除以沒有任何余數。如果是這樣,它會使用 運算子將該數字附加到字串 x 的末尾。如果沒有,則忽略該數字。在回圈之后,它使用切片符號 [::-1] 列印 x 的反轉值,這意味著從結尾開始并向后直到開頭。
uj5u.com熱心網友回復:
這應該可以解決問題
num = input()
new_num = ""
for i in num:
if int(num)%int(i) == 0:
new_num = i
print(new_num[::-1])
uj5u.com熱心網友回復:
您可以使用理解來根據數字是否可被數字整除來過濾數字,然后將所有數字連接起來以進行輸出。以相反的順序處理輸入,然后您不需要反轉輸出:
# num = input() - no need to use `str` as that's what input returns anyway
num = '172336'
x = ''.join(digit for digit in num[::-1] if int(num) % int(digit) == 0)
# '21' - 172336 is not divisible by 7, 3 or 6
num = '122'
x = ''.join(digit for digit in num[::-1] if int(num) % int(digit) == 0)
# '221'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523815.html
標籤:Pythonfor循环
