Python - 将整数拆分为单个数字(未确定的数字位数)

时间:2014-05-04 22:52:10

标签: python file-io integer-division

我们正在从包含整数的文件中读取行。读取的行数不确定。我们必须将每个整数分成整数的数字,然后将这些数字加在一起并创建另一个文件,该文件以整数和每个整数的数字之和进行写入。

教授说要使用事件控制的循环,但除此之外没有指明。我们只允许使用while循环,而不是for循环。

我无法弄清楚如何将代码放在这里,以便我可以显示到目前为止我测试的内容只是为了重新理解整数中一定数量的数字的分割。

编辑添加:

myFile = open("cpFileIOhw_digitSum.txt", "r")

numbers = 1
numberOfLines = 3
digitList = []
while(numbers <= numberOfLines):
    firstNum = int(myFile.readline())
    while (firstNum != 0):
        lastDigit = firstNum % 10
        digitList.append(lastDigit)
        firstNum = firstNum / 10
        firstDigit = firstNum
    digitList.append(firstDigit)
    digitSum = sum(digitList)
    print digitList
    print digitSum
    numbers += 1


myFile.close()

^这是我到目前为止所拥有的,但现在我的问题是我需要将每个整数的数字存储在不同的列表中。这是从文件中读取的未确定数量的整数。用于计数和结束循环的数字只是示例。

对我的代码进行最新更新:我现在需要知道的是如何让while循环知道txt文件中没有剩余的行。

myFile = open("cpFileIOhw_digitSum.txt", "r")
myNewFile = open("cpFileIOhw_output.txt", "w")

total = 0
fullInteger =
while(fullInteger != 0):
    fullInteger = int(myFile.readline())
    firstNum = fullInteger
    while (firstNum != 0):
        lastDigit = firstNum % 10
        total = total + lastDigit
        firstNum = firstNum / 10
        firstDigit = firstNum
    total = total + firstDigit
    myNewFile.write(str(fullInteger) + "-" + str(total))
    print " " + str(fullInteger) + "-" + str(total)
    total = 0


myFile.close()
myNewFile.close()

4 个答案:

答案 0 :(得分:1)

嗯,有两种方法可以解决这个问题:

  • 将整数转换为字符串并遍历每个字符,将每个字符转换回int(最好用for循环完成)

  • 反复得到除以10的除数和模数;重复直到被除数为0(最好用while循环完成)。

    这些是你需要的数学运算符:

    mod = 123 %  10     # 3
    div = 123 // 10     # 12
    

答案 1 :(得分:1)

不需要将整数转换为字符串。由于您正在从文本文件中读取整数,因此您将从字符串开始。

您需要一个外部while循环来处理从文件中读取行。由于您被禁止使用for循环,我会使用my_file.readline(),并且当您返回空字符串时,您将知道您已经读完该文件。

嵌套在该循环中,你需要一个处理拉开数字。虽然 - 你的教授需要两个循环吗?我认为你的问题在编辑之前说过,但现在却没有。如果不需要,我会使用列表理解。

答案 2 :(得分:0)

尝试将其拆分为数字:

num = 123456
s = str(num)
summary = 0

counter = 0
while (counter < len(s)):
    summary += int(s[counter])
    counter += 1
print s + ', ' + str(summary)

结果:

C:\Users\Joe\Desktop>split.py
123456, 21

C:\Users\Joe\Desktop>

答案 3 :(得分:0)

尝试以下方法......

total = lambda s: str(sum(int(d) for d in s))

with open('u3.txt','r') as infile, open('u4.txt','w') as outfile:
    line = '.' # anything other than '' will do
    while line != '':
        line = infile.readline()
        number = line.strip('\n').strip()
        if line != '':
            outfile.write(number + ' ' + total(number) + '\n') 
                            # or use ',' instead of ' 'to produce a CSV text file