我已經制作了這個函式,旨在在不使用回圈的情況下逐個列印數字的每個數字(不包括理解)。到目前為止,我做得很好,我唯一缺少的是我的 return 陳述句完全省略數字 0 (ex.print_digits(2019) = 2 1 9)
def print_digits(x):
ver = [u for u in str(x)]
if x < 10:
print(x)
else:
print(ver[0])
ver.pop(0)
a_string = "".join(ver)
inter = int(a_string)
return print_digits(inter)
uj5u.com熱心網友回復:
后
ver.pop(0)
a_string = '019', 所以
inter = int(a_string)
評估為19.
您仍然可以通過添加列印 0
if a_string[0] == '0':
print(0)
之間
a_string = "".join(ver)
和
inter = int(a_string)
uj5u.com熱心網友回復:
修改版
def print_digits(x):
ver = [u for u in str(x)]
# change 'x' to 'int' before comparison
if int(x) < 10:
print(x)
else:
ver.pop(0)
a_string = "".join(ver)
# comment this line. Now the function argument can be string.
# inter = int(a_string)
# give 'a_string' (instead of 'inter') to the function
return print_digits(a_string)
print_digits(2019)
uj5u.com熱心網友回復:
之所以發生這種情況,是因為當數字“09”轉換為整數時,它會更改為 9,而當檢查條件 x<10 時,結果為真。我已經修復了你的代碼。
def print_digits(x):
ver = [u for u in str(x)]
if int(x) < 10 and x[0]!="0":
print(x)
else:
print(ver[0])
ver.pop(0)
a_string = "".join(ver)
return print_digits(a_string)
uj5u.com熱心網友回復:
您可以使用以下方法完全避免遞回:
def print_digits(x):
print("\n".join(list(str(x))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383772.html
下一篇:具有相同整數的第二個函式不起作用
