首页 > 解决方案 > 制作一个有周期表的程序

问题描述

我正在使用 PYCHARM 来运行它,因为这是我们教授的要求

元素周期表的开发是为了组织有关构成宇宙的元素的信息。编写一个 python 程序,让您输入有关元素周期表中每个元素的信息。确保包含以下信息:符号、名称、原子序数、行和列 为用户提供选项菜单: 通过输入元素的符号,查看存储的有关任何元素的所有信息。选择一个属性并查看表中每个元素的该属性。

我有以下代码

class element:
    def __init__(self, sym, name, no, typ, row, col):
        self.symbol = sym
        self.name = name
        self.atomic_number = no
        self.elem_type = typ
        self.row = row
        self.column = col


def viewElement(element, n):
    print("Name: " + element.name)
    if n == 2 or n == 3:
        print("Symbol: " + element.symbol)
    if n == 2 or n == 4:
        print("Atomic Number: " + str(element.atomic_number))
    if n == 2 or n == 5:
        print("Type: " + element.elem_type)
    if n == 2 or n == 6:
        print("Row: " + str(element.row))
    if n == 2 or n == 7:
        print("Column: " + str(element.column))

    print("\n")



if __name__ == "__main__":
    elem_dict = {}

    while 1:
        print("\n Main Menu \n")
        print("1. Add an Element")
        print("2. View an Element")
        print("3. View all Element Names")
        print("4. View all Atomic Numbers")
        print("5. View all Types")
        print("6. View all Row Numbers")
        print("7. View all Column Number")
        print("8. Exit")
        choice = int(input("Enter your Choice: "))

        if choice == 1:
            sym = input("Enter the symbol: ")
            name = input("Enter the element name: ")
            atom = int(input("Enter the atomic number: "))
            typ = input("Enter the element type: ")
            row = int(input("Enter the row number: "))
            col = int(input("Enter the column number: "))

            if sym not in elem_dict.keys():
                e1 = element(sym, name, atom, typ, row, col)
                elem_dict[sym] = e1
                print(sym + " added\n")
            else:
                print("Element already present")

        elif choice == 2:
            sym = input("Enter the symbol: ")
            viewElement(elem_dict[sym], 2)


        elif choice == 3:
            for i in elem_dict.keys():
                viewElement(elem_dict[i], 3)

        elif choice == 4:
            for i in elem_dict.keys():
                viewElement(elem_dict[i], 4)

        elif choice == 5:
            for i in elem_dict.keys():
                viewElement(elem_dict[i], 5)

        elif choice == 6:
            for i in elem_dict.keys():
                viewElement(elem_dict[i], 6)

        elif choice == 7:
            for i in elem_dict.keys():
                viewElement(elem_dict[i], 7)

        elif choice == 8:
            print("Exiting")
            break
        else:
            print("Wrong entry, Please re-enter\n")

当我选择选项 1 并获得最后一部分时,我不断收到以下错误

主菜单

  1. 添加元素
  2. 查看元素
  3. Viel 所有元素名称
  4. 查看所有原子序数
  5. 查看所有类型
  6. 查看所有行号
  7. 查看所有列号
  8. 出口

输入您的选择:1

输入符号:H

输入元素名称:氢

输入原子序数:1

输入元素类型:气体

输入行号:1

输入列号:1

Traceback (most recent call last):
  File "C:/Users/stephanie/Desktop/LEGRANGE_UNIT_SEVEN/Periodic_Table.py", 
line 51, in <module>
    e1 = element(sym, name, atom, typ, row, col)
TypeError: element() takes no arguments

Process finished with exit code 1

标签: python

解决方案


您需要将init方法更改为 dunder ( __init__):

def __init__(self, sym, name, no, typ, row, col):
# Notice the double underscore either side of init

否则该类将不会初始化,因为您init只是该类中的一个自定义方法。


推荐阅读