簡體   English   中英

為什么在 python 中切片時忽略 0?

[英]Why 0 is being ignored in slicing in python?

我輸入了這段代碼來解決這個 HackerEarth 問題

x, k = input().split()
str(x)
m=len(x)
d=9
print(int(str(d)*int(k)), end="") 
print(int(x[int(k):int(m)]))

它被部分接受,並且在檢查所有輸出時它多次給出錯誤的答案,我發現代碼始終忽略 0。例如:

當輸入這個: 70843010538381368 7 output 是: 9999999538381368但它應該是: 99999990538381368

我不知道為什么 0 被忽略以及如何解決它。

當您將后半部分轉換為 int 時,它不會打印前導零。 只留下一個字符串:

x,k = input().split()
k = int(k)
print('9' * k + x[k:])

你做錯了什么是你投的太多了。

讓我們分解這個語句: print(int(x[int(k):int(m)]))

x是一個字符串“70843010538381368”

k是值“7”字符串

m是值17integer


首先讓我們看看x[int(k):int(m)]會給我們什么:

km被轉換為整數,使得int(k)7並且int(m)17 這里的旁注, m已經是 integer 因此不需要將其轉換為 integer 。
x[int(k):int(m)]字符串x從索引 7 切片到 17。

x[int(k):int(m)] == '0538381368'


錯誤

完成后,您將值轉換為integer 這就是它崩潰的地方。

int(x[int(k):int(m)])或者如果你願意int('0538381368')等於538381368 你失去了最初的零!


最后,您正在打印它,它隱式轉換為字符串: str(538381368) == '538381368'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM