我曾嘗試以多種方式完成此任務,但沒有一種有效。
用戶輸入一個自然數 n。一步,從數字中減去它的最大數字。在下一步中,從結果中減去其最高位,等等。程式需要確定并列印達到零需要多少次移動。例如,數字 24 需要五次移動(24 → 20 → 18 → 10 → 9 → 0)。
這是我到目前為止所做的。我知道如何找到最大數字,但如何將其放入回圈中以從結果中減去最大數字?
num = int(input("Enter natural number "))
if num <= 0:
print("That is not a natural number")
else:
max = 0
while num > 0:
digit = num % 10
if max < digit:
max = digit
num = num // 10
print("Largest Digit is : ", max)
uj5u.com熱心網友回復:
您可以嘗試使用字串和max:
num = int(input("Enter natural number "))
if num <= 0:
print("That is not a natural number")
else:
ntimes = 0
while num > 0:
num -= int(max(str(num)))
ntimes = 1
print(ntimes)
輸出:
5
uj5u.com熱心網友回復:
如果您需要不將數字轉換為字串以獲取其數字,您可以使用divmod:
def get_natural_num_input(prompt: str) -> int:
num = -1
while True:
try:
num = int(input(prompt))
if num <= 0:
print("Error: Not a natural number, try again...")
else:
break
except ValueError:
print("Error: Enter a integer, try again...")
return num
def get_digits(num: int) -> list[int]:
digits = []
while num > 0:
num, digit = divmod(num, 10)
digits.append(digit)
return digits
def moves_to_get_zero(num: int) -> int:
moves = 0
while num != 0:
num -= max(get_digits(num))
moves = 1
return moves
num = get_natural_num_input("Enter a natural number: ")
print(f'moves_to_get_zero({num}) = {moves_to_get_zero(num)}')
示例用法:
Enter a natural number: 24
moves_to_get_zero(24) = 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350501.html
上一篇:計算一個數字由多少個組組成?
下一篇:如何將亂數轉換為另一個數的倍數?
