我正在使用遞回在 python 中執行一個說數字的程式,我希望如果 digit==0 什么也不回傳。
代碼:
# Q1
# Say digit
# i/p = 412 - o/p = four one two
list = ['zero','one','two','three','four','five','six','seven','eight','nine']
n=412
def say_digit(n, list):
if n==0:
return ''
digit = int(n % 10)
n = n / 10
say_digit(n, list)
print(list[digit], end=' ')
return ''
if __name__ == "__main__":
n=int(input("Enter Number: "))
ans = say_digit(n, list)
print(ans)
輸出:

uj5u.com熱心網友回復:
使用 // 而不是 /
即 n = n // 10
/ 給出 float 和 // 給出 int
uj5u.com熱心網友回復:
代碼在每次迭代中除以 10。但是不能保證這會達到 0。在 Python3 中,它會進行浮點除法。您可以通過整數除法得到 0(使用 // 而不是 /)。
這是一個更新的版本:
# Q1
# Say digit
# i/p = 412 - o/p = four one two
numbers = ['zero','one','two','three','four','five','six','seven','eight','nine']
n=412
def say_digit(n, numbers):
if n==0:
return ''
digit = int(n % 10)
n = n // 10
return say_digit(n, numbers) ' ' numbers[digit]
if __name__ == "__main__":
n=int(input("Enter Number: "))
ans = say_digit(n, numbers)
print(ans)
它還翻譯串列中單詞中的每個數字。
理想情況下,不應隱藏像“串列”這樣的內置名稱。為避免這種情況,此版本使用名稱“數字”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417801.html
標籤:
上一篇:呼叫Python物件時超出最大遞回深度-相同代碼適用于某些公司,但不適用于其他公司
下一篇:如何使用單詞串列分隔字串?
