Vì lý do nào đó, tập lệnh của tôi từ chối chạy trực tiếp từ Text Wrangler nhưng vẫn chạy tốt khi được nhập vào thiết bị đầu cuối.
import math
chắc chắn chính():
print("Chương trình này tìm nghiệm thực của phương trình bậc hai\n")
a,b,c, = eval(input("Hãy nhập các hệ số (a,b,c):"))
discRoot = math.sqrt(b * b -4 * a * c)
root1 = (-b + discRoot) / (2 * a)
root2 = (-b - discRoot) / (2 * a)
print("\nCác giải pháp là:" , root1, root2)
chủ yếu()
Khi tôi chạy nó trong textwrangler, tôi gặp lỗi "TypeError: eval() arg 1 must be a string or code object". Việc sử dụng eval() không có nghĩa là dữ liệu đầu vào sau đây là số nguyên chứ không phải chuỗi phải không? Tại sao điều này lại xảy ra?
Trong Python 2,đầu vào()
Tương đương với Python 3 eval(đầu vào())
. Tôi nghĩ bạn đang chạy nó trong Terminal bằng Python 3 nhưng TextWrangler sử dụng Python 2 nên TextWrangle đang thực thi eval(eval(input()))
- Kết quả tính toán là đánh giá(5)
, nguyên nhân gây ra lỗi mà bạn nhìn thấy.
Để khắc phục sự cố này, bạn cần cập nhật TextWrangler hoặc sử dụng Python 2 trong thiết bị đầu cuối. Nếu bạn muốn tùy chọn thứ hai, bạn nên thay đổi eval(đầu vào())
Thay thế bằng đầu vào()
.
Lưu ý phụ - sử dụng nó như thế này đánh giá
Đó là một ý tưởng tồi (nguy hiểm). Bạn có lẽ nên làm một cái gì đó như a, b, c = map(int, input().split(","))
điều (trong Python 3).
Tôi là một lập trình viên xuất sắc, rất giỏi!