Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
4.6 kB
2
Indexable
Never
import turtle

# 1. دریافت معادله خط از کاربر
def get_line_equation():
  """
  این تابع معادله خط را از کاربر دریافت می کند.

  Returns:
    a: شیب خط
    b: عرض از مبدأ
  """
  while True:
    try:
      a = float(input("شیب خط را وارد کنید: "))
      b = float(input("عرض از مبدأ را وارد کنید: "))
      break
    except ValueError:
      print("ورودی شما نامعتبر است. لطفاً عددی را وارد کنید.")

  return a, b

# 2. رسم خط با استفاده از معادله
def draw_line(a, b, color="black", linewidth=1):
  """
  این تابع خطی را با استفاده از معادله خط رسم می کند.

  Args:
    a: شیب خط
    b: عرض از مبدأ
    color: رنگ خط
    linewidth: ضخامت خط
  """
  turtle.penup()
  turtle.goto(-10, a * -10 + b)
  turtle.pencolor(color)
  turtle.setlinewidth(linewidth)
  turtle.pendown()
  turtle.goto(10, a * 10 + b)

# 3. دریافت مختصات دو نقطه
def get_two_points():
  """
  این تابع مختصات دو نقطه را از کاربر دریافت می کند.

  Returns:
    x1: مختص x نقطه اول
    y1: مختص y نقطه اول
    x2: مختص x نقطه دوم
    y2: مختص y نقطه دوم
  """
  while True:
    try:
      x1 = float(input("مختص x نقطه اول را وارد کنید: "))
      y1 = float(input("مختص y نقطه اول را وارد کنید: "))
      x2 = float(input("مختص x نقطه دوم را وارد کنید: "))
      y2 = float(input("مختص y نقطه دوم را وارد کنید: "))
      break
    except ValueError:
      print("ورودی شما نامعتبر است. لطفاً عددی را وارد کنید.")

  return x1, y1, x2, y2

# 4. محاسبه معادله خط دو نقطه
def calculate_line_equation(x1, y1, x2, y2):
  """
  این تابع معادله خط دو نقطه را محاسبه می کند.

  Args:
    x1: مختص x نقطه اول
    y1: مختص y نقطه اول
    x2: مختص x نقطه دوم
    y2: مختص y نقطه دوم

  Returns:
    a: شیب خط
    b: عرض از مبدأ
  """
  if x1 == x2:
    # خط عمودی است
    a = None
    b = x1
  else:
    a = (y2 - y1) / (x2 - x1)
    b = y1 - a * x1

  return a, b

# 5. نمایش توضیحات مربوط به معادله خط
def show_توضیحات():
  """
  این تابع توضیحات مربوط به معادله خط را نمایش می دهد.
  """
  print("معادله خط به صورت y = ax + b است.")
  print("در این معادله:")
  print("  * a شیب خط نامیده می‌شود و نشان‌دهنده زاویه خط با محور افقی (x) است.")
  print("  * b عرض از مبدأ نامیده می‌شود و نشان‌دهنده نقطه تقاطع خط با محور عمودی (y) است.")

# 6. شروع برنامه
show_توضیحات()

# دریافت معادله خط از کاربر
a, b = get_line_equation()

# رسم خط با استفاده از معادله
draw_line(a, b)

# دریافت مختصات دو نقطه
x1, y1, x2, y2 = get_two_points()

# محاسبه معادله خط دو نقطه
a, b = calculate_line_equation(x1, y1, x2, y2)

# نمایش معادله خط دو نقطه
print("معادله خط دو نقطه ({}, {}) و ({}, {}) به صورت y = {}x + {} است.".format(x1, y1, x2, y2, a, b))
# 7. رسم خط دو نقطه
draw_line(a, b, color="red", linewidth=2)

# 8. نمایش نقاط
turtle.penup()
turtle.goto(x1, y1)
turtle.dot("red")
turtle.goto(x2, y2)
turtle.dot("red")

# 9. نمایش معادله خط در کنار خط
turtle.setposition(-10, a * -10 + b + 10)
turtle.pendown()
turtle.write("y = {}x + {}".format(a, b), font=("Arial", 12, "normal"))

# 10. انتخاب نوع خط
while True:
  choice = input("نوع خط را انتخاب کنید (خط مستقیم/خط منحنی): ").lower()
  if choice in ("خط مستقیم", "خط منحنی"):
    break
  else:
    print("ورودی شما نامعتبر است.")

# 11. رسم خط بر اساس نوع انتخابی
if choice == "خط مستقیم":
  # رسم خط مستقیم
  draw_line(a, b)
else:
  # رسم خط منحنی
  # ...

# 12. نمایش توضیحات مربوط به نوع خط
if choice == "خط مستقیم":
  print("خط رسم شده یک خط مستقیم است.")
else:
  print("خط رسم شده یک خط منحنی است.")

# 13. پایان برنامه
turtle.done()
Leave a Comment