我使用Python 3.3.3。我想寫我的第二個Python程序(我的第一個有點困難的項目(對於新手)),它是一個包含用於視覺參考的象形圖的減肥跟蹤器。到現在爲止,我一直在努力。我遇到的問題是編寫一個函數,它將輸入int或float,然後將其分解成它的部分(10s,5s,1s和十分之一),準備與象形函數一起使用寫作。python打破數字在10s 5s 1s和.1s
我已經考慮過使用字典來存儲這些值只是爲了得到一些使用它們的做法。我不知道如何解決這個問題。如果除了使用字典還有更簡單的解決方案,請務必分享您的想法。
def get_digits(weight_entry):
"""(int or float) -> (dict)
Takes user input int or float weight_entry, and returns a populated dict
separated in to tens, fives, ones, and tenths.
>>>get_digits(279.6)
{'tens': 27, 'fives': 1, 'ones': 4, 'tenths': 6}
>>>get_digits(236.5)
{'tens': 23, 'fives': 1, 'ones': 1, 'tenths': 5}
>>>get_digits(224.2)
{'tens': 22, 'fives': 0, 'ones': 4, 'tenths': 2}
"""
get_digits_dict = {'tens': 0, 'fives': 0, 'ones': 0, 'tenths': 0}
digits_string = str(weight_entry)
populate_tens = get_digits_dict['tens'] = int(digits_string[:2])
它被分解成幾十個這種方式的原因是因爲每個10對應於1,10個值的形狀。
你可以看到我已經嘗試將數字轉換爲一個字符串,然後使用切片來獲得我想要的部分,然後將其返回給一個int。我也試着把這些數字全部拿出來,把我的數字全部拿出來,留給我,而不是277.6,7.6,從中我可以嘗試做一些簡單的數學來獲得我需要的數據。從7.6我需要得到的是一個五,兩個,六個十分之一。
我的輸出,除了時間戳我打算添加,是應該站出來爲這樣:
265.0□□□□□□□□□□□□□□□□□□□□□ □□□□□▪
263.0□□□□□□□□□□□□□□□□□□□□□□□□□□▫▫▫
260.0□□□□□ □□□□□□□□□□□□□□□□□□□□□
259.0□□□□□ □□□□□□□□□□□□□□□□□□□□▪▫▫▫▫
256.0□□□□□□□□□□□□□□□□□□□□ □□□□□▪▫
257.0□□□□□□□□□□□□□□□□□□□□□□□□□▪▫▫
254.0□□□□□ □□□□□□□□□□□□□□□□□□□□▫▫▫▫
251.0□□□□□□□□□□□□□□□□□□□□□ □□□□▫
249.0□□□□□□□□□□□□□□□□□□□□□□□□▪▫▫▫▫
245.6□□□□□□□□□□□□ □□□□□□□□□□□□▪∙∙∙∙∙∙∙
244.3□□□□□□□□□□□□□□□□□□□□□□□□▫▫ ▫▫∙∙∙
244.1□□□□□□□□□□□□□□□□□□□□□□□□▫▫▫▫∙
239.7□□□□□□ □□ □□□□□□□□□□□□□□▪▫▫▫▫∙∙∙∙∙∙∙
我是一個系統化的生物,所以很自然我想下一步在5秒。那麼,如果有五個,我可以假設只有一個五個,並且只有當文字數字在5到9之間時,這五個纔會存在。在5s之後,將被用來捕捉這些數字,當然,小數點後的多餘部分是十分之一。我的主要問題是找到五個,然後是多餘的。
我想我只是有點沮喪和沮喪,因爲這是一種超出我的聯盟,但那只是我,我正試圖通過從我的範圍之外的東西學習加強。我會花更多的時間試圖編寫這個函數,但是我覺得我會從不弄清楚,有人向我展示,然後分析我錯誤發現的所有地方,從中學到更多東西。
任何幫助都將不勝感激。如果你讀到這裏,我也很感激。
WOW所以信息,所有的人。我曾想過使用floor division和/或modulo,但我無法弄清楚如何得出確切的結果。如果我有代表+1的話,我會的。在完成我的程序後,我會選擇與我打算完成的最接近的答案,儘管我可能會綜合使用每個人的答案以產生最終結果。感謝您幫助我學習。
獲得五個,並且超出的那些被證明是麻煩分離。以及小數的精度使得整體難以理解。感謝所有貢獻者。
我想你可以:除以10取整數部分,除以5取餘數,取整數部分,除以1(hah)取整數部分,除以0.1餘數取整數部分。 – towr
好吧,我想我只是在想。謝謝。 –