while循环中的打印功能不打印

问题描述 投票:0回答:4

我是python的新手,正在发生一些可疑的事情。我正在尝试找出我在解决此问题上的问题:

此练习假设您已完成编程练习7,随机数文件作家。编写另一个程序,从文件中读取随机数,然后显示数字,然后显示以下数据:•总数•从文件中读取的随机数的数量

写文件:

import random

def main():

    randomcount = int(input('How many numbers should i generate?'))

    randomfile = open('randomnumber.txt', 'w')

    total = 0
    for numbers in range(randomcount):
        number = random.randint(1,100)
        total+= number
        randomfile.write((str(number)) + '\n')
        randomfile.write((str(total)) + '\n') 

    randomfile.close()
    print('File updated')

main()

输出:

How many numbers should i generate?5 (enter)
file updated                    -       **Question 1**
file updated                     | ---- this is new.. while doing 
file updated                    -       trial and error this started
                                        repeating. First 2 times then 
                                        after awhile 3 times. 
                                        Refreshed kernel and outputs 
                                        still does this

读取文件:主要问题

def main():
    randomfile = open('randomnumber.txt','r')

    contents = randomfile.readline()

    while randomfile !='':
        total = randomfile.readline()

        contents = contents.rstrip('\n')
        total = total.rstrip('\n')

        print(contents)

        contents = randomfile.readline()

   print('total: ',total)
   randomfile.close()

main()

输出:

90                      -
22                       |
17                       |--- Randomly generated
2                        |
75                      -
        **Question 2**
        <--- print('total: ', total) not showing up


        -
         |
         |
         |
         .   **Question 3**
         .   <--------- Space goes on forever like if its printing 
         .              space. so much that theres a scroll bar just
         .              for empty space. if i try to scroll all the 
         |              way to the bottom so that i can see if maybe 
         |              its printing at the end i never reach the end 
         |              of it because for some reason the program 
        -               keeps adding more and more space.
python for-loop while-loop printing record
4个回答
0
投票

问题是写入总数的行在每次发送时都在执行。这就是为什么生成的数字是行数的两倍。解决方案是使该行缩进,这是我在这里所做的:

import random

def main():

    randomcount = int(input('How many numbers should i generate?'))

    randomfile = open('randomnumber.txt', 'w')

    total = 0
    for numbers in range(randomcount):
        number = random.randint(1,100)
        total+= number
        randomfile.write((str(number)) + '\n')
    randomfile.write((str(total)) + '\n') # <<<<<<<<<<<<<<This line was indented, it is fixed now.

    randomfile.close()
    print('File updated')

main()

编辑:修复读取功能:

def main():
    randomfile = open('randomnumber.txt', 'r')
    lines = randomfile.readlines()
    total = 0

    for line in lines:
        if line is lines[-1]:
            print(f"Total: {line.replace('\n', '')}") #Since the write function includes the total as the last line, you don't need to calculate here.
        else:
            print(line.replace('\n', ''))

main()

0
投票

希望将readline更改为readlines,应该可以工作


0
投票

显然,问题是,在第一行中,您使用单引号'打开,并使用双引号"关闭。更改:

def main():

    randomcount = int(input('How many numbers should i generate?"))

至:

def main():

    randomcount = int(input('How many numbers should i generate?'))

0
投票

我重组了代码,并使其成为for循环,而不是while循环。您不需要将要转换为int的数字打包。将累加器放在输入文件部分而不是输出文件部分。 Mae代码清除程序可以正常工作!

随机导入

def main():

    randomcount = int(input('How many numbers should i generate?'))

    randomfile = open('randomnumber.txt', 'w')

    for numbers in range(1,randomcount + 1):
        numbers = random.randint(1,100)

        randomfile.write(str(numbers) + '\n') 

    randomfile.close()

    randomfile = open('randomnumber.txt','r')
    total = 0

    for numbers in randomfile:
        numbers = int(numbers)
        total+= numbers

        print(numbers)
    print('total',total)

main()
© www.soinside.com 2019 - 2024. All rights reserved.