我正在努力完成我正在参加的课程(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
答案 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