![](/img/trans.png)
[英]Generate x+xx+xxx+xxxx … for a given integer (for 4 -> 4+44+444…)
[英]Python - Converting a 9 digit integer into a string with the format of "xxx-xx-xxxx"
我正在為我所在的 python 課程做一些練習題,但我對其中一個問題有點迷茫。 任務看起來相對簡單:
創建一個接受 integer 輸入的解決方案,該輸入表示 9 位未格式化的學生標識號。 Output 作為不帶空格的字符串的標識號。 解決方案的格式應為:111-22-3333。 因此,如果輸入為“154175430”,則預期的 output 為“154-17-5430”。
這看起來很簡單,但是一旦我查看了他們給我們啟動程序的初始編碼注釋,注釋的第一行是:
# hint: modulo (%) and floored division(//) may be used
這個提示真的讓我絆倒了。 我只是想知道如果您只是將 integer 轉換為字符串,您將如何或為什么使用模除法或底除法? 我認為它與格式有關才能在必要的數字之間獲得“-”?
我們可以嘗試使用樓層划分和模數路線:
num = 154175430
output = str(num / 1000000) + "-" + str((num / 10000) % 100) + "-" + str(num % 10000)
print(output) # 154-17-5430
我們也可以偷懶並使用正則表達式替換:
num = 154175430
output = re.sub(r'(\d{3})(\d{2})(\d{4})', r'\1-\2-\3', str(num))
print(output) # 154-17-5430
我假設需要一個與此類似的答案:
def int2student_id(in_val:int):
start = in_val//1000000
middle = in_val//10000%100
end = in_val%10000
return str(start) + '-' + str(middle) + '-' + str(end)
print(int2student_id(154175430))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.