到目前為止,這是我的代碼。它將數字作為字串,如果需要,將它們拆分。然后將它們從八進制轉換為十進制。但是,在多個數字作為單個字串出現的情況下;轉換后,我需要再次將它們重新組合成一個字串。他們到達時的格式相同。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split()
for i in text:
c = int(i, base=8)
var1 = "".join(str(c))
print(var1)
else:
c = int(dataset, base=8)
print(c)
預期輸出應為:“80 110 134”
我試過了:
d = " ".join(str(c))
輸出:
8 0
1 1 0
1 3 4
d = " ".join(str(c))
輸出:
1 3 48 0
1 3 48 01 1 0
1 3 48 01 1 01 3 4
還有各種其他似乎只是破壞一切的東西,型別錯誤等......沒有.join這是我迄今為止最接近的:
80
110
134
uj5u.com熱心網友回復:
問題是它print以換行符結尾,你不想要
要么改變
end. 請注意,您不是"".join(str(c)),只需使用cfor i in text: c = int(i, base=8) print(c, end=" ")或者將它們保存在一個回圈中,并一次列印它們
result = [] for i in text: result.append(str(int(i, base=8))) print(" ".join(result))
請注意,您既不需要 thestrip也不需要 theif/else并且可以將所有內容組合到串列推導中
dataset = "120"
result = [str(int(i, base=8)) for i in dataset.split()]
print(" ".join(result))
uj5u.com熱心網友回復:
我會帶著理解去做。在空格處拆分資料,將元素轉換為intwith base=8,將其轉換回字串,然后連接結果。您無需檢查分隔符,split()為您執行此操作(如果沒有分隔符,則回傳一個僅包含一個元素的串列,因此您無需關心)。
" ".join(str(int(i, base=8)) for i in dataset.split())
uj5u.com熱心網友回復:
此代碼提供您需要的輸出:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split(delimiter)
c = []
for i in text:
c.append(str(int(i, base=8)))
var1 = " ".join(c)
print(var1)
else:
c = int(dataset, base=8)
print(c)
uj5u.com熱心網友回復:
假設您只需要列印結果而不將其保存為變數,則根本不需要join、轉換為str或檢查分隔符。sep使用函式引數的默認值print(即空格),您可以在一行簡單的代碼中完成所有操作:
print(*(int(oct, 8) for oct in dataset.split()))
這將解包將每個空格分隔的元素從字串轉換為八進制基數的 int 的結果。然后元素默認由空格分隔(如上所述)并print為您轉換為字串。
uj5u.com熱心網友回復:
您不必關心是否使用分隔符。Python 會解決這個問題。
考慮到這一點,執行此操作的一種詳細方法在哪里,即使您使用單個數字也可以。記下單數/復數變數名稱以指導您:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
numbers_as_octal_string = dataset.split(delimiter)
numbers_as_decimal_string = []
for number_as_octal_string in numbers_as_octal_string:
number_as_decimal = int(number_as_octal_string, 8)
number_as_decimal_string = str(number_as_decimal)
numbers_as_decimal_string.append(number_as_decimal_string)
print(delimiter.join(numbers_as_decimal_string))
這樣做之后,Python 中有一個稱為串列推導的技巧,通過在一行中完成大量作業,它們可以使您的作業變得更加輕松。它也是“Pythonic”的做事方式(盡管我實際上會創建至少一兩個變數)。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
print(delimiter.join([str(int(number_as_octal_string)) for number_as_octal_string in dataset.split(delimiter)]))
uj5u.com熱心網友回復:
星期天下午你們都沒有更好的事情要做嗎?
我從 3 個回復開始寫這篇文章,現在有 7 個。
我不確定我是否可以勾選多個作為答案。他們都作業。這是 Python 中最困難的事情,似乎有很多方法可以做同樣的事情。對于那些不是典型的神經質并且很容易開始過度思考事情的人,我很快就會癱瘓。
@ Tomerikoo - 我確實需要輸出一個變數。到目前為止,我一直將其保留為列印件,以便我可以看到結果輸出。它將形成一個函式。
這次,我選擇了@ azro的解決方案。雖然如果可能的話,我也會嘗試勾選其他人。不確定它是否允許我這樣做。
最后,我已將您的所有解決方案復制到我的筆記本中。因此,當我令人震驚的糟糕記憶在未來讓我失望時。你會再次幫助我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433672.html
