创建一个取整数的函数并将其减少到奇数

时间:2015-12-09 23:58:31

标签: python-3.x

我正在努力完成我正在参加的课程(Python 3)。

他给了我们一个里面有数字的文件。我们打开它并将这些数字添加到列表中。

“创建一个名为makeOdd()的函数,该函数返回一个整数值。该函数应该接收任何整数,并将其减半为奇数,直到它成为奇数。
       o例如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

3 个答案:

答案 0 :(得分:1)

我不想直接给你答案,所以我将在整个过程中与你交谈,让你自己生成代码。

您无法一步解决此问题。您需要重复划分并每次检查值以查看它是否奇怪。

从广义上讲,当你需要重复一个过程时,有两种方法可以继续;循环和递归。 (好的,有很多,但那些是最常见的)

循环时,您需要检查当前号码x是否为奇数。如果没有,将其减半并再次检查。循环完成后,x将是您的结果。

如果使用递归,请使用x的函数。如果它很奇怪,只需返回x,否则再次调用该函数,传入x/2

这两种方法都可以解决您的问题,两者都是基本概念。

答案 1 :(得分:0)

添加@Basic所说的,永远不会import *是一种不好的做法,以后会成为问题的潜在根源......

答案 2 :(得分: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