【问题标题】:Calculate average heights from data in file根据文件中的数据计算平均高度
【发布时间】:2020-07-31 04:01:25
【问题描述】:

**目标:打印文件中的平均身高和人数(通过计算名称)并要求用户提供新的输入,然后计算新的平均身高**

问题:没有输出它只是输出“进程完成,退出代码 0”,输出应该是“输入您的姓名:”

代码如下:

class Calutis:
    def init(self):
        self.names=[]
        self.heights=[]
        self.totalheight=0
        self.totalcount=0

    def reset(self):
        self.names = []
        self.heights = []
        self.totalheight = 0
        self.totalcount = 0

    def calAvgHeight(self):
        f=open("listOfStudentHeight.txt","r")
        for line in f:
            info=line.split("\t")
            self.names.append(info[0])
            self.heights.append(float(info[1]))
            self.totalheight+=float(info[1])
            self.totalcount=len(self.names)
            print("the average score of " + self.totalcount + "students is: " + (self.totalheight)/self.totalcount)

    def adduser(self):
        self.names=input("Enter Your Name : ")
        while(True):
            try:
                self.heights=round(float(input("Enter Your Height in Metres")),2)
                break
            except ValueError:
                print("Enter a valid input for height: ")
            try:
                self.names=(str(input("Enter Your Name : ")))
                break
            except ValueError:
                print("Enter a valid input for name : ")

        f=open("listOfStudentHeight.txt",'a')
        f.write(self.names + "\t" + self.heights + "\n")
        f.close()

        calBox = Calutis()
        calBox.adduser()
        calBox.calAvgHeight()
This is the weights and names file content:
CHITRA DEVI D/O SILVARAJAH  1.65
MARSHEAL HOUDEL S/O MATHEWS JA  1.72
MUHAMMAD AZLIE B ZULKIFLIE  1.68
HO QIN YUAN Melvin  1.69
TENG YONG PENG DESMOND  1.76
CHEONG LEE YEE  1.59
MUHAMMAD ZULFIKAR B ZAINAL  1.9
ASYRAFIZWANI BTE ABDUL LATIFF   1.58
HIE BAO XIN 1.63
MAK YU JIE  1.67

请考虑向我伸出援助之手,我们将不胜感激!

【问题讨论】:

  • 我在这里没有看到任何 JavaScript、PHP 和 HTML。你确定你正确使用了标签吗?
  • 这只是类定义。您需要通过 weightCalc = Cal() 之类的方式实例化该类,然后运行 ​​weightCalc.calvalue()
  • 顺便说一下,尝试用f.close()关闭你的文件
  • f.close() 在这段代码中做了什么?
  • 我只是尝试了代码它仍然没有输出除了“进程完成退出代码0”

标签: python io


【解决方案1】:

以下是您需要做的几件事

  1. 实例化类:calculator = Cal()
  2. 调用adduser函数:calculator.addusers()
  3. 调用caluser函数:calculator.caluser()

类定义没有运行代码。可以将其想象为具有您可以访问和调用的功能的资源。

另外,所有这些都在一个文件中吗?如果此类定义在单独的文件中,请确保您实际运行的文件包含我提到的 3 行。

关闭文件不应影响代码的功能,但这是一种很好的做法。完成对文件的写入后,您应该调用 file.close()。至于具体原因,这是一个与文件描述符相关的更高级的操作系统主题。

【讨论】:

  • 我已经完成了你们给我的所有建议,但输出仍然是“进程完成,退出代码 0”
  • 您能否添加一个屏幕截图来显示您是如何运行代码的?或者至少描述一下你正在使用什么 IDE,你在命令行中输入了什么来运行代码等等?
  • 我正在使用 pycharm 并通过单击绿色箭头按钮运行它,我不确定如何检查我使用的 IDE。抱歉,我是 python 新手
  • 查看此链接:repl.it/repls/AgreeableWaterySymbol 我可以运行此代码并获得一些输出(尽管存在一些错误)。你能用一个打印“hello world”的 main.py 文件制作一个简单的程序吗?如果不是,则说明您的设置有问题。
  • 我刚刚尝试了它可以工作的代码,所以我当前的代码一定有什么遗漏或错误
【解决方案2】:

问题

您的代码似乎没有任何输出,因为代码实际上并没有做任何事情! :P 具体来说,即使您编写了一堆代码,但实际上并没有执行。

说明

您定义了一个名为Cal 的类,但实际上并没有使用它。一个类就像一个预填充的盒子,它是一个容器,里面有很多有用的东西,即函数和变量。盒子里的物品坐在那里时不会做任何事情 - 你必须主动打开盒子并抓住这些物品才能使用它们。关于这对于编写 Python 代码意味着什么,您必须实际访问该类并使用它的函数/变量才能对它进行任何操作。

这里还有一层。编写一个类(如您的 Cal 类)仅定义预填充框的外观是什么样的。它实际上并没有创建预填充框。因此,对于什么是类的更准确描述可能是预填充框的“蓝图”。

解决方案

您必须做三件事才能让您的班级Cal 中的任何代码运行:

  1. 为您的盒子定义一个蓝图(您已经通过创建类 Cal 完成了这项工作)

这称为“创建类定义”或“定义类”

  1. 从“蓝图”创建盒子实例

这被称为“创建一个类的实例”或“实例化一个类”。您创建的东西被称为“对象”(我知道,没有盒子那么有趣哈哈)。

  1. 伸手去拿东西,然后使用它

您必须访问类中的函数或成员变量才能使用它们。

以下是你如何做这 3 件事...

# Step 1: Create the blueprint
# Put your class definition for "Cal" here
#

calBox = Cal()  # Step 2: Create the box (note: parentheses are important here!)
calBox.adduser()  # Step 3: Use something from the box (eg: call one of your functions!)

事实证明,您的“蓝图”可用于创建许多个盒子!因此,您可以拥有 3、4、5... 任意数量 :)

calBox1 = Cal()  # Create a box (i.e. an instance of the Cal class)
calBox2 = Cal()  # Create another box (i.e. another instance)
calBox3 = Cal()  # Create anotherrrr box :P

就是这样!在Cal 类定义的下方和外部添加这两行代码。然后你应该看到一些输出! :)

【讨论】:

  • 我刚刚尝试过,但输出仍然只是“进程完成,退出代码 0”
  • @Kai 我尝试使用我在回答中提到的两个添加项自己运行代码。我能够得到输出(虽然你有一些错误哈哈)。也许您没有正确运行脚本。参考stackoverflow.com/questions/21492214/…
  • 我目前需要使用 pycharm 来完成这项任务,如果这会有所不同,但你愿意告诉我这些错误吗?
  • 我通过单击 pycharm 上的绿色箭头按钮运行代码,但我的老师也使用相同的应用程序和代码,但他的输出要求用户输入您的姓名和身高。检查输入是浮点数还是字符串
  • 不确定 PyCharm 是如何工作的,但请尝试将我的答案中额外的 2 行放入此 if-check 中:if __name__ == "__main__":(新行)calBox = Cal()(新行)calBox.adduser()
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 2019-08-01
相关资源
最近更新 更多