我是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.
问题是写入总数的行在每次发送时都在执行。这就是为什么生成的数字是行数的两倍。解决方案是使该行缩进,这是我在这里所做的:
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()
希望将readline
更改为readlines
,应该可以工作
显然,问题是,在第一行中,您使用单引号'
打开,并使用双引号"
关闭。更改:
def main():
randomcount = int(input('How many numbers should i generate?"))
至:
def main():
randomcount = int(input('How many numbers should i generate?'))
我重组了代码,并使其成为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()