Area and volume calculator












0












$begingroup$


I'm a beginner coder, doing it solely for fun, having started coding about two months ago with Python. I have a working piece of code for calculating area and volume of different geometric shapes, using user input of "radius".



As I have said, the code works but I would like to know how I can improve it to be shorter, faster and more efficient. Essentially, I think it would be instructive to compare my rank amateur code to the code that an experienced software developer would produce to accomplish the same result.



from tkinter import *
from tkinter import ttk
import sys

root = Tk()

pi = 3.141

# Option Box

var = StringVar(root)
var.set("Functions")

lbl_title = Label(root, text = "GEOMETRIC SHAPES AND VOLUMES")
lbl_title.grid(row = 0, column = 0, columnspan = 2, padx =5, pady = 10)

lbl_choose = Label(root, text = "Choose a function and hit OK:")
lbl_choose.grid(row = 1, column = 0, padx = 5, pady = 0, sticky = W)

box = ttk.OptionMenu(root, var, "Circle Circumference", "Circle Area", "Sphere Volume",
"Rectangle Area", "Rectangle Prism Volume", "Cone Volume")
box.grid(row = 2, column = 0, padx=5, pady=5, sticky= W)

# Separator

line1 = ttk.Separator(root, orient = HORIZONTAL)
line1.grid(row = 4, column = 0, columnspan = 3, sticky = EW) # Note separator sticky EW!

#txt_data_in = Text(root, height = 1, width = 30, bg = "Light Grey")
#txt_data_in.grid(row = 5, column = 0, padx = 5, sticky = W)

# Functions

def circ_circumf(r):
print("nThe circumference of the circle is: " + str(2*pi*r) + " units.")

def circ_area(r):
print("nThe area of the circle is: " + str(pi*r**2) + " units.")

def sphere_vol(r):
print("nThe volume of the sphere is: " +str(4/3 * pi * r**3) + " units.")

def rect_area(l,w):
pass

def rect_prism_vol(l, w, h):
pass

def cone_vol(r, h):
pass

def exit():
sys.exit()

# Main Function

def main():
if var.get() == "Circle Circumference":
r = int(input("Enter the radius of the circle in the units of your choice: "))
circ_circumf(r)

elif var.get() == "Circle Area":
r = int(input("Enter the radius of the circle in the units of your choice: "))
circ_area(r)

elif var.get() == "Sphere Volume":
r = int(input("Enter the radius of the sphere in the units of your choice: "))
sphere_vol(r)

# Function Button

butt1 = ttk.Button(root, text = "OK", command = main)
butt1.grid(row = 2, column = 1, padx = 5, sticky = W)

# Exit Button

butt2 = ttk.Button(root, text = "Exit", command = exit)
butt2.grid(row = 6, column = 0, padx = 5, pady = 5, sticky = W)

root.mainloop()









share|improve this question









New contributor




Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$

















    0












    $begingroup$


    I'm a beginner coder, doing it solely for fun, having started coding about two months ago with Python. I have a working piece of code for calculating area and volume of different geometric shapes, using user input of "radius".



    As I have said, the code works but I would like to know how I can improve it to be shorter, faster and more efficient. Essentially, I think it would be instructive to compare my rank amateur code to the code that an experienced software developer would produce to accomplish the same result.



    from tkinter import *
    from tkinter import ttk
    import sys

    root = Tk()

    pi = 3.141

    # Option Box

    var = StringVar(root)
    var.set("Functions")

    lbl_title = Label(root, text = "GEOMETRIC SHAPES AND VOLUMES")
    lbl_title.grid(row = 0, column = 0, columnspan = 2, padx =5, pady = 10)

    lbl_choose = Label(root, text = "Choose a function and hit OK:")
    lbl_choose.grid(row = 1, column = 0, padx = 5, pady = 0, sticky = W)

    box = ttk.OptionMenu(root, var, "Circle Circumference", "Circle Area", "Sphere Volume",
    "Rectangle Area", "Rectangle Prism Volume", "Cone Volume")
    box.grid(row = 2, column = 0, padx=5, pady=5, sticky= W)

    # Separator

    line1 = ttk.Separator(root, orient = HORIZONTAL)
    line1.grid(row = 4, column = 0, columnspan = 3, sticky = EW) # Note separator sticky EW!

    #txt_data_in = Text(root, height = 1, width = 30, bg = "Light Grey")
    #txt_data_in.grid(row = 5, column = 0, padx = 5, sticky = W)

    # Functions

    def circ_circumf(r):
    print("nThe circumference of the circle is: " + str(2*pi*r) + " units.")

    def circ_area(r):
    print("nThe area of the circle is: " + str(pi*r**2) + " units.")

    def sphere_vol(r):
    print("nThe volume of the sphere is: " +str(4/3 * pi * r**3) + " units.")

    def rect_area(l,w):
    pass

    def rect_prism_vol(l, w, h):
    pass

    def cone_vol(r, h):
    pass

    def exit():
    sys.exit()

    # Main Function

    def main():
    if var.get() == "Circle Circumference":
    r = int(input("Enter the radius of the circle in the units of your choice: "))
    circ_circumf(r)

    elif var.get() == "Circle Area":
    r = int(input("Enter the radius of the circle in the units of your choice: "))
    circ_area(r)

    elif var.get() == "Sphere Volume":
    r = int(input("Enter the radius of the sphere in the units of your choice: "))
    sphere_vol(r)

    # Function Button

    butt1 = ttk.Button(root, text = "OK", command = main)
    butt1.grid(row = 2, column = 1, padx = 5, sticky = W)

    # Exit Button

    butt2 = ttk.Button(root, text = "Exit", command = exit)
    butt2.grid(row = 6, column = 0, padx = 5, pady = 5, sticky = W)

    root.mainloop()









    share|improve this question









    New contributor




    Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      0












      0








      0





      $begingroup$


      I'm a beginner coder, doing it solely for fun, having started coding about two months ago with Python. I have a working piece of code for calculating area and volume of different geometric shapes, using user input of "radius".



      As I have said, the code works but I would like to know how I can improve it to be shorter, faster and more efficient. Essentially, I think it would be instructive to compare my rank amateur code to the code that an experienced software developer would produce to accomplish the same result.



      from tkinter import *
      from tkinter import ttk
      import sys

      root = Tk()

      pi = 3.141

      # Option Box

      var = StringVar(root)
      var.set("Functions")

      lbl_title = Label(root, text = "GEOMETRIC SHAPES AND VOLUMES")
      lbl_title.grid(row = 0, column = 0, columnspan = 2, padx =5, pady = 10)

      lbl_choose = Label(root, text = "Choose a function and hit OK:")
      lbl_choose.grid(row = 1, column = 0, padx = 5, pady = 0, sticky = W)

      box = ttk.OptionMenu(root, var, "Circle Circumference", "Circle Area", "Sphere Volume",
      "Rectangle Area", "Rectangle Prism Volume", "Cone Volume")
      box.grid(row = 2, column = 0, padx=5, pady=5, sticky= W)

      # Separator

      line1 = ttk.Separator(root, orient = HORIZONTAL)
      line1.grid(row = 4, column = 0, columnspan = 3, sticky = EW) # Note separator sticky EW!

      #txt_data_in = Text(root, height = 1, width = 30, bg = "Light Grey")
      #txt_data_in.grid(row = 5, column = 0, padx = 5, sticky = W)

      # Functions

      def circ_circumf(r):
      print("nThe circumference of the circle is: " + str(2*pi*r) + " units.")

      def circ_area(r):
      print("nThe area of the circle is: " + str(pi*r**2) + " units.")

      def sphere_vol(r):
      print("nThe volume of the sphere is: " +str(4/3 * pi * r**3) + " units.")

      def rect_area(l,w):
      pass

      def rect_prism_vol(l, w, h):
      pass

      def cone_vol(r, h):
      pass

      def exit():
      sys.exit()

      # Main Function

      def main():
      if var.get() == "Circle Circumference":
      r = int(input("Enter the radius of the circle in the units of your choice: "))
      circ_circumf(r)

      elif var.get() == "Circle Area":
      r = int(input("Enter the radius of the circle in the units of your choice: "))
      circ_area(r)

      elif var.get() == "Sphere Volume":
      r = int(input("Enter the radius of the sphere in the units of your choice: "))
      sphere_vol(r)

      # Function Button

      butt1 = ttk.Button(root, text = "OK", command = main)
      butt1.grid(row = 2, column = 1, padx = 5, sticky = W)

      # Exit Button

      butt2 = ttk.Button(root, text = "Exit", command = exit)
      butt2.grid(row = 6, column = 0, padx = 5, pady = 5, sticky = W)

      root.mainloop()









      share|improve this question









      New contributor




      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I'm a beginner coder, doing it solely for fun, having started coding about two months ago with Python. I have a working piece of code for calculating area and volume of different geometric shapes, using user input of "radius".



      As I have said, the code works but I would like to know how I can improve it to be shorter, faster and more efficient. Essentially, I think it would be instructive to compare my rank amateur code to the code that an experienced software developer would produce to accomplish the same result.



      from tkinter import *
      from tkinter import ttk
      import sys

      root = Tk()

      pi = 3.141

      # Option Box

      var = StringVar(root)
      var.set("Functions")

      lbl_title = Label(root, text = "GEOMETRIC SHAPES AND VOLUMES")
      lbl_title.grid(row = 0, column = 0, columnspan = 2, padx =5, pady = 10)

      lbl_choose = Label(root, text = "Choose a function and hit OK:")
      lbl_choose.grid(row = 1, column = 0, padx = 5, pady = 0, sticky = W)

      box = ttk.OptionMenu(root, var, "Circle Circumference", "Circle Area", "Sphere Volume",
      "Rectangle Area", "Rectangle Prism Volume", "Cone Volume")
      box.grid(row = 2, column = 0, padx=5, pady=5, sticky= W)

      # Separator

      line1 = ttk.Separator(root, orient = HORIZONTAL)
      line1.grid(row = 4, column = 0, columnspan = 3, sticky = EW) # Note separator sticky EW!

      #txt_data_in = Text(root, height = 1, width = 30, bg = "Light Grey")
      #txt_data_in.grid(row = 5, column = 0, padx = 5, sticky = W)

      # Functions

      def circ_circumf(r):
      print("nThe circumference of the circle is: " + str(2*pi*r) + " units.")

      def circ_area(r):
      print("nThe area of the circle is: " + str(pi*r**2) + " units.")

      def sphere_vol(r):
      print("nThe volume of the sphere is: " +str(4/3 * pi * r**3) + " units.")

      def rect_area(l,w):
      pass

      def rect_prism_vol(l, w, h):
      pass

      def cone_vol(r, h):
      pass

      def exit():
      sys.exit()

      # Main Function

      def main():
      if var.get() == "Circle Circumference":
      r = int(input("Enter the radius of the circle in the units of your choice: "))
      circ_circumf(r)

      elif var.get() == "Circle Area":
      r = int(input("Enter the radius of the circle in the units of your choice: "))
      circ_area(r)

      elif var.get() == "Sphere Volume":
      r = int(input("Enter the radius of the sphere in the units of your choice: "))
      sphere_vol(r)

      # Function Button

      butt1 = ttk.Button(root, text = "OK", command = main)
      butt1.grid(row = 2, column = 1, padx = 5, sticky = W)

      # Exit Button

      butt2 = ttk.Button(root, text = "Exit", command = exit)
      butt2.grid(row = 6, column = 0, padx = 5, pady = 5, sticky = W)

      root.mainloop()






      python






      share|improve this question









      New contributor




      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 14 mins ago









      Jamal

      30.3k11119227




      30.3k11119227






      New contributor




      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 46 mins ago









      Andre HumanAndre Human

      1




      1




      New contributor




      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Andre Human is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "196"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Andre Human is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214628%2farea-and-volume-calculator%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Andre Human is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Andre Human is a new contributor. Be nice, and check out our Code of Conduct.













          Andre Human is a new contributor. Be nice, and check out our Code of Conduct.












          Andre Human is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214628%2farea-and-volume-calculator%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Сан-Квентин

          8-я гвардейская общевойсковая армия

          Алькесар