[英]print function in while loop not printing
我是 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()
output:
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()
output:
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.
希望将readline
更改为readlines
,这应该可以
显然问题在于,在您的第一行中,您使用单引号'
打开并以双引号"
关闭。更改:
def main():
randomcount = int(input('How many numbers should i generate?"))
至:
def main():
randomcount = int(input('How many numbers should i generate?'))
问题是写入总数的行正在执行每次迭代。 这就是为什么生成的数字是行数的两倍。
解决方案是取消缩进该行,我在这里做了:
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()
编辑:修复读取 function:
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()
我重组了我的代码,并使其成为 for 循环而不是 while 循环。 您不需要 rstrip 正在转换为 int 的数字。 将累加器放在输入文件部分而不是 output 文件部分。 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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.