2015-12-09 20 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 
一样简单
相关问题