2015-12-09 24 views
-3

我正在爲我正在採取的類(Python 3)我的最後一部分在這部分卡住了。使一個函數,採取一個整數,並將其減少到奇數

他給了我們一個裏面有數字的文件。我們打開它並將這些數字添加到列表中。

「創建一個名爲makeOdd()的函數,返回一個整數值,該函數應該取任意整數,並將其減半,直到它變爲奇數爲止。 10將減少一半到5 o 9已經是奇數,所以它會保持爲9. o但是12會減半到6,然後再減半到3. o雖然16會被切到8被削減到4被削減到2被削減到1. 將這個函數應用到數組中的每一個數字「

我試圖搜索互聯網,但我還沒有線索在哪裏甚至從這一開始。你能幫忙的話,我會很高興。

這裏我的整個決賽至今:

#imports needed to run this code. 
from Final_Functions import * 


#Defines empty list 
myList = [] 
sumthing = 0 
sortList = [] 
oddList = [] 
count = 0 

#Starts the Final Project with my name,class, and quarter 
intro() 
print("***************************************************************",'\n') 

#Opens the data file and reads it then places the intrager into a list we can use later. 
with open('FinalData.Data', 'r') as f: 
    myList = [line.strip() for line in f] 
print("File Read Complete",'\n') 



#Finds the Sum and Adverage of this list from FinalData.Data 
print("*******************sum and avg*********************************") 
for oneLine in myList: 
    tempNum = int(oneLine) 
    sumthing = sumthing + tempNum 
avg = sumthing /1111 
print("The Sum of the List is:",sumthing) 
print("The Adverage of the List is:",avg,'\n') 
print("***************************************************************",'\n') 


#finds and prints off the first Ten and the last ten numbers in the list 
firstTen(myList) 
lastTen(myList) 
print("***************************************************************",'\n') 


#Lest sort the list then find the first and last ten numbers in this list 
sortList = myList 
sortList.sort() 
firstTen(sortList) 
lastTen(sortList) 
print("****************************************************************",'\n') 

語言:Python 3的

+1

你到目前爲止嘗試過什麼嗎?請向我們展示您的努力。 –

+0

「我不知道哪裏可以開始」 - 真的嗎?不知道如何打開一個文件,不知道如何讀取數字,不知道如何劃分兩個,不知道如何檢查一個數字是奇數還是偶數,都不是這樣? – zvone

+0

我已經做了前半部分的前軀只是我發佈的部分我不知道該怎麼做。我只列出了所有的偶數。對於i在myList中: 如果計數%2 == 1: oddList.append(ⅰ) 計數+ = 1 –

回答

1

我不想直接給你答案,所以我要談談您完成整個過程,並讓你生成你自己的代碼。

您無法一步解決此問題。您需要重複劃分並每次檢查該值以查看是否奇怪。從廣義上講,當你需要重複一個過程時,有兩種方法可以繼續;循環和遞歸。 (好吧,有很多,但最常見的)

循環時,你會檢查當前的數字x是否是奇數。如果沒有,將其減半並再次檢查。一旦循環完成,x將是你的結果。

如果使用遞歸,請使用x。如果是奇數,只需返回x,否則再次調用該函數,傳入x/2

這兩種方法都可以解決您的問題,兩者都是基本概念。

+0

'用於myList中民: oddTemp = INT(NUM) oddTemp = oddTemp /一個 oddList.append (oddTemp) print(oddTemp)' –

+0

對不起,我不確定那段代碼的意思是什麼?這是你理解我的答案的原因嗎?或者你現在擁有什麼?要麼 ???該代碼循環遍歷輸入列表,但是需要第二個循環(對於每個輸入)重複地進行分割(或者,如果您喜歡這樣想,可以計算'a')。嘗試閱讀以開始閱讀:http://www.tutorialspoint.com/python/python_while_loop.htm它在Python2中,所以'print'語法稍有不同,但核心功能完全相同 – Basic

0

添加到什麼@Basic說,永遠不會做import *是一個不好的做法,是問題的一個潛在來源稍後...

0

看起來像你還在這個簡單的問題迷惑,要給予數字X通過將其除以2將其減少到奇數,對吧?然後問自己我是怎麼做的?答案是@Basic說你首先問「X是偶數?」如果答案是否定的,那麼我減少了這個數字,但是如果答案是是,那麼下一步將它除以2並將結果保存在X中,然後重複這個過程直到達到期望的結果。提示:使用while

回答你的問題有關

for num in myList: 
    if num != 0: 
     num = float(num) 
     num/2 

這裏的問題是,你不救分工的結果,這樣做是因爲這

for num in myList: 
    if num != 0: 
     num = float(num) 
     num = num/2 
一樣簡單
相關問題