我目前正在嘗試制作一個程式,將字串串列中的元素轉換為浮點串列。盡管必須進行一些調整。
用戶在每個鍵入的數字之間輸入一個“冒號”,然后它將劃分串列中的元素。(這適用于自動取款機)
每個值都必須以 1 位小數輸出,我一直在嘗試這樣做:
print(f'{word:.1f}')但一直無法正確地做到這一點。
輸入: 5:2:4
輸出: [5.0, 2.0, 4.0]
將不勝感激一些建議。
user_list = input("Enter values:")
word = user_list.split(":")
print(word)
uj5u.com熱心網友回復:
list(map(float, word.split(':')))
這會將每個數字轉換為浮點數
uj5u.com熱心網友回復:
您可以遍歷 array 中的每個專案word,轉換為float,然后使用四舍五入為一位小數round()并將其附加到新陣列中:
user_list = input("Enter values:")
word = user_list.split(":")
newlist = []
for num in word:
newlist.append(round(float(num), 1))
print(newlist)
請注意,如果您希望用戶3.432在輸入中包含更長的十進制浮點數,并希望將它們輸出為3.4. 如果您假設用戶只會在輸入中包含整數,那么 Sakshi 的答案可能是最壓縮的解決方案
uj5u.com熱心網友回復:
假設您已經驗證了輸入,一個很好的方法是通過串列理解
input = "5:2:4"
user_list = input.split(":")
float_list = [float(x) for x in user_list]
print(float_list)
uj5u.com熱心網友回復:
您可以將映射函式傳遞給串列函式。您的單詞變數已被 ':' 分割。嘗試串列(地圖(浮動,字))
uj5u.com熱心網友回復:
這一行:
word = user_list.split(":")
獲取一個字串 ( user_list) 并將其拆分為出現 的部分:。結果是一個字串串列。例如,'alice:bob'.split(":")會變成['alice', 'bob'].
你列印了所有的word,所以你正在列印一個串列,這就是為什么你應該看到['5', '2', '4'],因為這是串列文本中的表示,仍然是字串。
如果要列印由逗號和空格分隔的數字(例如),精度為一位數,您可以執行以下操作:
print(', '.join(f'{float(w):.1f}' for w in word))
這會遍歷 中的字串word,將它們轉換為浮點數,然后格式化它們,收集所有它們,然后.join()將它們放在一起', '。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366292.html
下一篇:如何以安全的方式評估串列索引?
