Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中读取和写入文本文件时,如何计算数字的差异?_Python_Text Files - Fatal编程技术网

在python中读取和写入文本文件时,如何计算数字的差异?

在python中读取和写入文本文件时,如何计算数字的差异?,python,text-files,Python,Text Files,好吧,我把学习python作为一种爱好,我需要编写一个程序:查看每个学生的数据,计算学生在复试时达到最低分数所需的分数。所以我要说的是,用户通过考试所需的最低分数是85分,如果学生记录显示为80分,他们需要5分。我已经编写了文本文件,并开始了python代码,但我遇到了一个死胡同,任何帮助都将不胜感激。非常感谢 Python: def menu(): with open('homework.txt','r') as a_file: contents_of_file = a_file.re

好吧,我把学习python作为一种爱好,我需要编写一个程序:查看每个学生的数据,计算学生在复试时达到最低分数所需的分数。所以我要说的是,用户通过考试所需的最低分数是85分,如果学生记录显示为80分,他们需要5分。我已经编写了文本文件,并开始了python代码,但我遇到了一个死胡同,任何帮助都将不胜感激。非常感谢

Python:

def menu():
with open('homework.txt','r') as a_file:
    contents_of_file = a_file.read()
print(contents_of_file)
input()
文本文件:

emma smith,79
noah jones,32
olivia williams,26
liam taylor,91
sophia green,80
mason brown,98

我们将逐个查看每一行,而不是一次读取整个文件。我们将使用
split
将行划分为名称和数字,然后使用
int
将数字字符串转换为数字类型

def menu(): 
    target = 85   
    with open('homework.txt','r') as a_file:
        for l in a_file:
            name, number = l.split(',')
            number = int(number)
            print(name + ': '  + ('passed' if number>=target else str(target - number)))
    input()

('passed'if number>=target-else str(target-number))
只是一种在一行中执行if语句的方法,用于简单的事情,而不是一次读取整个文件,我们将分别查看每一行。我们将使用
split
将行划分为名称和数字,然后使用
int
将数字字符串转换为数字类型

def menu(): 
    target = 85   
    with open('homework.txt','r') as a_file:
        for l in a_file:
            name, number = l.split(',')
            number = int(number)
            print(name + ': '  + ('passed' if number>=target else str(target - number)))
    input()

('passed'if number>=target-else str(target-number))
只是一种在一行中执行if语句的方法,用于简单的事情

还有其他的可能性和较短的方法,但为了给您一个基本的理解,这可能会有所帮助:这应该读取每行并在逗号处拆分它

with open('homework.txt','r') as a_file:
    for line in a_file.readlines():
        split_line=line.split(",")
        name=split_line[0]
        score=split_line[1]
        YOUR CODE HERE

还有其他的可能性和较短的方法,但为了让您有一个基本的了解,这可能会有所帮助:这应该阅读每一行并在逗号处拆分

with open('homework.txt','r') as a_file:
    for line in a_file.readlines():
        split_line=line.split(",")
        name=split_line[0]
        score=split_line[1]
        YOUR CODE HERE

pandas包非常适合处理像您这样的文本文件。虽然这对于您当前的场景来说可能有点过头了,但了解一下可能会很有用

import pandas as pd

marks_needed = 85
df = pd.read_csv('homework.txt', header=None)

for name, marks in df.values:
    if marks > marks_needed:
        print('{} passed!'.format(name)
    else:
        extra_marks = marks_needed - marks
        print('{} needs {} more marks'.format(name, extra_marks))

pandas包非常适合处理像您这样的文本文件。虽然这对于您当前的场景来说可能有点过头了,但了解一下可能会很有用

import pandas as pd

marks_needed = 85
df = pd.read_csv('homework.txt', header=None)

for name, marks in df.values:
    if marks > marks_needed:
        print('{} passed!'.format(name)
    else:
        extra_marks = marks_needed - marks
        print('{} needs {} more marks'.format(name, extra_marks))

逐行读取文件并将其从
拆分到结尾?您应该仔细查看pandas包,非常适合处理文本文件逐行读取文件并将其从
拆分到结尾?您应该仔细查看pandas包,非常适合处理文本文件