所以我一直在努力學習python。它一直在殺死我。現在已經快2個月了。我有 2 個問題。1. 有什么更簡單的方法可以解決這個問題,不需要 45 分鐘?還有 2 - 在你變得有能力之前,你必須練習 Python 多長時間?
在分析資料集時,例如人的身高或體重的資料,一個常見的步驟是調整資料。可以通過將值標準化為 0 到 1 之間的值或丟棄例外值來完成此調整。
對于這個程式,讀入浮點數串列并通過將所有值除以最大值來調整它們的值。以小數點后兩位數輸出每個值。每個數字輸出后跟一個空格。
例如:如果輸入是:
30.0 50.0 10.0 100.0 65.0
輸出是:
0.30 0.50 0.10 1.00 0.65
''' Type your code here. '''
num = input()
makeList = num.split()
biggest = float(makeList[0])
for index, value in enumerate(makeList):
if float(value) > float(biggest):
biggest = value
lastString = ""
for i in makeList:
answer = ("{:.2f}".format(float(i)/float(biggest)))
lastString = answer " "
print(lastString)
1:比較輸出 3 / 3
Input
30.0 50.0 10.0 100.0 65.0
Your output
2:比較輸出 4 / 4
Input
5.0 10.0 15.0 20.0 25.0 30.0 35.0
Your output
0.14 0.29 0.43 0.57 0.71 0.86 1.00
3:比較輸出 3 / 3
Input
99.9 52.5 12.6 200.0
Your output
0.50 0.26 0.06 1.00
0.30 0.50 0.10 1.00 0.65
uj5u.com熱心網友回復:
你只需要一步一步地做這件事。獲取輸入:
num = input()
將其拆分為單詞并將它們全部轉換為浮點數:
vals = [float(k) for k in num.split()]
現在我們有一個浮動串列。找到最大的:
maxval = max(vals)
將它們全部除以該值:
for i in range(len(vals)):
vals[i] /= maxval
列印它們:
for i in vals:
print( "{:.2f}".format(i), end=' ')
print()
uj5u.com熱心網友回復:
回答您的問題:
- 解決此問題的更簡單方法是什么?
第 1 步:您可以做的是將資料作為“浮點數”并跳過第一個數字
或者,如果要求是逐行發送,則使用“輸入”回圈的方式也可以
data = list(map(float, text.strip().split('\n')))[1:]
第 2 步:現在計算最大值
maximum = max(data)
第 3 步:最后,使用串列推導將串列中的每個元素除以在第 2 步中找到的最大值
您可以在此處了解串列理解:https ://www.w3schools.com/python/python_lists_comprehension.asp
out = [e/maximum for e in data]
- 在你變得勝任之前,你必須練習 Python 多長時間?
嗯,沒有固定的答案,專注于解決問題,你很高興。此外,沒有明確的時間可以量化您需要練習多長時間。據我所知,只要你想在這個領域練習,你就會練習!
uj5u.com熱心網友回復:
一個更簡單的方法是:
inpt = "30.0 50.0 10.0 100.0 65.0" # take the input together
inpt = [float(val) for val in inpt.split()] # turn the input into a list of floats
large = max(inpt) # find the largest element
# print each element divided by large and specify 2 decimal places as the format
print(*(f"{(val/large):.2f}" for val in inpt))
代碼精確列印:0.30 0.50 0.10 1.00 0.65
uj5u.com熱心網友回復:
一種更簡單的方法是偽代碼。如果您要解決一個大問題,那么在撰寫代碼之前進行偽代碼和規劃確實會有所幫助。當我還是初學者時,我曾經認為偽代碼都是廢話,而是直接進入編碼。
首先獲取輸入
mylist = input()
創建一個新的串列/輸出
newlist = []
獲得最大值
maxval = max(mylist)
瀏覽舊串列并除以最大值,然后在每一步添加到新串列
for i in mylist:
x = i / maxval
newlist.append(x)
至于你的第二個問題,編程需要很大的耐心才能擅長。你必須不斷地在問題中掙扎和掙扎以發展技能。當然,擁有一個好的老師或資源會讓你免于許多不必要的掙扎。有些人似乎比其他人更快,但在我看來,他們只是更有經驗以合乎邏輯的方式思考問題。
我只需要練習幾個月的 Python 就可以掌握它,因為我首先學習了 C 。我建議先從低級語言開始,然后再轉到高級語言,但這是一個完全不同的話題。現在是 2022 年,你可以自己學習任何東西,但我過時了,如果你真的想這樣做并以此謀生,我建議你去上大學(我知道這很值得商榷)。
uj5u.com熱心網友回復:
解決這個問題的最簡單方法是首先將其轉換為numpy陣列,然后將整個陣列除以最大數,
import numpy
test = np.array([30.0, 50.0, 10.0, 100.0, 65.0])
print(test/test.max())
關于第二個問題……我只能說不要太擔心。剛開始學什么東西都挺難的,大家都曾經和你現在處于同一階段。有一個你每天都遵循的系統計劃,知道你現在應該學習什么,以及在你完成當前主題后應該學習什么。如果您愿意,請尋求某人的指導。不要承受太大的壓力,因為不是每個人都以相同的速度學習。多花點時間沒關系……重要的是你學到了一些東西。
根據我的經驗,我花了大約 2-3 個月的時間在 Python 中獲得中級水平,但那是因為我支付了課程費用,該課程為我提供了系統的計劃和良好的指導。但我該死的肯定,即使不花一分錢,你也可以升級。所以振作起來!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/464292.html
