- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,这就是我的困境:
我正在为 Reddit 子版 block 开发常见问题解答机器人。我在 bool 逻辑方面遇到了麻烦,需要一双更有经验的眼睛(这是我在 Python 中的第一次冒险)。现在,该机器人基本上正在向我创建的测试 subreddit 发送垃圾邮件。这里没有分享特定信息,而是显示了我遇到的确切问题:
#Define Key Words
##################################
#System Requirements Definitions
sysReq1 = ('system requirements' and '?')
sysReq2 = ('can' and ('handle' or 'play' or 'run') and ('netbook' or 'notebook' or 'pc' or 'mac' or 'macbook' or 'laptop' or 'comp' or 'computer') and '?')
#System Requirements Response
sysReqResponse = 'PROGRESS'
##################################
testString1 = "i hate this"
#intended result for 1: nothing
testString2 = "is that real?"
#intended result for 2: nothing
testString3 = "What are the system requirements?"
#intended result for 3: 'PROGRESS'
print testString1
if (sysReq1 or sysReq2) in testString1.lower():
print sysReqResponse
print testString2
if (sysReq1 or sysReq2) in testString2.lower():
print sysReqResponse
print testString3
if (sysReq1 or sysReq2) in testString2.lower():
print sysReqResponse
当你运行它时,它会显示:
i hate this
is that real?
PROGRESS
What are the system requirements?
PROGRESS
它不断返回 testString2 的值。我认为这与“?”有关。但真的不知道如何、为什么或做什么。救命!
编辑:这是我希望它显示的内容:
当你运行它时,它会显示:
i hate this
is that real?
What are the system requirements?
PROGRESS
到目前为止,我发现如果我将 sysReq1 = ('系统要求' and '?')
更改为 sysReq1 = '系统要求' '?'
并且仅检查 sysReq1
của nếu như
,它会返回战斗值。问题是我确实需要这些 hoặc
语句来减少困惑/冗余。
sysReq2 存在的原因是因为有些人对相同的答案提出不同的问题:
它可以在我的上网本上运行吗?
我的电脑可以处理吗?
我可以在 Mac 上玩吗?
这不包括“我能吗”的变体,但你明白了。所有这些都应返回相同的值(在本例中为“PROGRESS”)
1 Câu trả lời
Tôi nghĩbất kì
, tất cả
,和 generators可以在这里帮助您。
#Define Key Words
##################################
#System Requirements Definitions
sysReq1 = ['system requirements', '?']
sysReq2 = [['can']
,['handle', 'play', 'run']
,['netbook', 'notebook', 'pc', 'mac', 'macbook', 'laptop', 'comp', 'computer']
,['?']
]
def test(testString):
lowerTestString = testString.lower()
return all(i in lowerTestString for i in sysReq1) or all(any(j in lowerTestString for j in i) for i in sysReq2)
#System Requirements Response
sysReqResponse = 'PROGRESS'
##################################
testString1 = "i hate this"
#intended result for 1: nothing
testString2 = "is that real?"
#intended result for 2: nothing
testString3 = "What are the system requirements?"
#intended result for 3: 'PROGRESS'
print testString1
if test(testString1):
print sysReqResponse
print testString2
if test(testString2):
print sysReqResponse
print testString3
if test(testString3):
print sysReqResponse
该函数并不是绝对必要的,但它确实使代码更易于维护。如果您需要更改支票,则仅更改一处。
首先,我们将两组字符串转换为一个列表和一个列表的列表。然后,要求变为:“字符串必须包含 sysReq1
的所有元素,或至少包含 sysReq2
每个子列表中的一个元素。”
我们通过将生成器与 bất kì
Và tất cả
函数组合来完成检查此条件。在存储了 thấp hơn
以避免重复调用之后,我们创建了一个 bool 值生成器(相当于一个迭代器)。每个 bool 值告诉我们 sysReq1 的单个元素是否包含在 lowered 中。然后我们将此迭代器传递给第一个 tất cả
,它检查列表是否包含所有 ĐÚNG VẬY
。如果是,则 tất cả
函数返回 ĐÚNG VẬY
并且第二个检查被短路。否则,它返回 SAI
并且 Python 继续前进到 or 后面。
PhảisysReq2
的检查更为复杂。首先,我们为每个子列表创建一个 bool 值生成器;这是在 bất kì
调用中。该列表包含一组关于子列表的每个元素是否在降低的字符串中的 bool 值。如果此 bool 值列表(基于子列表)中的任何元素为 ĐÚNG VẬY
,Nhưng bất kì
调用将返回 ĐÚNG VẬY
。 (顺便说一句,它短路了,而且由于我们使用的是生成器,ĐÚNG VẬY
之后的检查甚至不会运行,这与我们使用列表不同。)然后我们创建另一个生成器;这个包含每个子列表测试的结果(所有 bất kì
调用)。然后在此生成器上调用 tất cả
,它检查问题是否包含所有子列表中的元素。
我会注意到,如果用户直接输入问题,他们可能会输入无意义的问题。例如,“Play can netbook kuguekf ugifugfj ugufsgjf nugjfgjfgj?”
将通过此检查。
使用生成器运行返回 bool 值的测试。使用 bất kì
Và tất cả
组合 bool 值的可迭代对象。
根据评论,这里有一个替代解决方案 split
s 输入字符串中的空格并使用 bộ
s 而不是 danh sách
。我还从您列出的示例问题中添加了一个测试用例,以确保 hoặc
的第二部分被命中。
#Define Key Words
##################################
#System Requirements Definitions
sysReq1 = set(['system', 'requirements'])
sysReq2 = [set(['can'])
,set(['handle', 'play', 'run'])
,set(['netbook', 'notebook', 'pc', 'mac', 'macbook', 'laptop', 'comp', 'computer'])
]
def test(testString):
if not testString.endswith('?'):
return False
lowerTestString = set(testString.rstrip('?').lower().split())
return lowerTestString.issuperset(sysReq1) or all(not lowerTestString.isdisjoint(i) for i in sysReq2)
#System Requirements Response
sysReqResponse = 'PROGRESS'
##################################
testString1 = "i hate this"
#intended result for 1: nothing
testString2 = "is that real?"
#intended result for 2: nothing
testString3 = "What are the system requirements?"
#intended result for 3: 'PROGRESS'
testString4 = "Can my PC handle it?"
#intended result for 4: 'PROGRESS'
print testString1
if test(testString1):
print sysReqResponse
print testString2
if test(testString2):
print sysReqResponse
print testString3
if test(testString3):
print sysReqResponse
print testString4
if test(testString4):
print sysReqResponse
我认为这相当简单。请注意,bộ
构造函数采用可迭代对象,因此我只是为此传递列表。 “不相交”部分可能有点令人困惑;只是确保交叉路口不为空。我使用它是希望实现该函数,以便它不会计算整个交集。问号有问题,因为它没有用空格分隔,所以我只是确保字符串以问号和 rstrip
结尾。编辑掉它。
实际上,这种实现可能比具有大量生成器的实现更干净、更易于维护。
关于Python:尝试创建与(或(值,值,值))的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17335003/
Câu hỏi của tôi: Rất cụ thể. Tôi đang cố gắng tìm ra cách đơn giản nhất để phân tích cú pháp văn bản sau: ^^domain=domain_value^^version=version_value^^account_type=account_ty
Được rồi, đây là tình huống khó xử của tôi: Tôi đang phát triển một bot Hỏi đáp thường gặp cho một khối subreddit Reddit. Tôi đang gặp rắc rối với logic bool và cần một người có kinh nghiệm hơn hướng dẫn (đây là lần đầu tiên tôi sử dụng Python). Bây giờ,
Đầu tiên nó lặp lại tất cả các giá trị y, sau đó lặp lại tất cả các giá trị x. Tôi cần cả X và y thay đổi cùng một lúc. Đối với x = 3 Đến lr + 1 Đối với y = 2 Đến lr anyl.Cells(x, 1)
Giả sử tôi có một bảng Excel với 2 cột: ngày tháng trong các ô từ A1 đến A10 và giá trị trong các ô từ B1 đến B10. Tôi muốn tính tổng tất cả các giá trị của các ngày trong tháng 5. Tôi có 3 khả năng: {=SUM((MONTH(A1:A10)=
Làm thế nào để chuyển đổi điểm Z từ phân phối Z (phân phối chuẩn, phân phối Gauss) sang giá trị p? Tôi vẫn chưa tìm thấy.
Tôi đang viết lại một số mã Javascript để hoạt động trong Excel VBA. Nhờ tìm kiếm trên trang web này, tôi đã dịch được hầu hết mã Javascript! Tuy nhiên, có một số mã mà tôi không hiểu chính xác nó đang làm gì. Đây là một
Tôi đã gặp phải những tình huống trong đó dấu thời gian chứa định dạng ngày tháng. Sau đó, tôi muốn xây dựng một biểu đồ hiển thị số lượng "nhấp chuột" vào mục "mỗi ngày", //khai báo mảng $array1 = array("Date" => 0); $a
Tôi mới làm quen với scala! Câu hỏi của tôi là, có một lớp trường hợp nào có thành viên myItem:Option[String] không Khi tôi xây dựng lớp, tôi cần gói nội dung chuỗi trong: Option("some string") Hoặc So
Tôi đang tạo một hệ thống đăng nhập bằng PHP. Tôi cần người dùng đăng nhập bằng tên người dùng hoặc email hoặc số điện thoại và sau đó là mật khẩu. Bởi vì tôi biết trong Java chúng ta có thứ gì đó giống như email == user ^ username == user
Tôi đang sử dụng sqlite trên một dự án C++ nhưng tôi gặp sự cố khi sử dụng WHERE trên một cột có giá trị văn bản Tôi đã tạo một cơ sở dữ liệu sqlite: CREATE TABLE User( id INTEGER
Khi hàm tạo được nêu rõ ràng, nó không được sử dụng cho các chuyển đổi ngầm định. Trong đoạn mã đã cho, hàm tạo được đánh dấu là rõ ràng. Vậy tại sao trong trường hợp foo obj1(10.25); nó lại hoạt động nhưng trong trường hợp foo obj2=10.25;
Tôi biết đây là một câu hỏi chủ quan nên tôi xin lỗi nếu cần phải đóng lại, nhưng tôi cảm thấy câu hỏi này xuất hiện khá thường xuyên khiến tôi tự hỏi liệu có sự ưu tiên chung nào cho hình thức này hơn hình thức kia không. Rõ ràng, câu trả lời tốt nhất là "cải tiến mã của bạn để bạn không cần phải kiểm tra lỗi", nhưng đôi khi không có
Sự khác biệt giữa hai bộ chọn jQuery này là gì? Sau đây là định nghĩa từ w3schools.com: Bộ chọn [thuộc tính~=giá trị] chọn các đối tượng có thuộc tính cụ thể có giá trị chứa chuỗi cụ thể. [thuộc tính*=
Tại sao chúng ta lại cần CSS [thuộc tính|=giá trị] Selector khi CSS3 [thuộc tính*=giá trị] Selector về cơ bản cũng thực hiện chức năng tương tự và khả năng tương thích với trình duyệt cũng gần như tương tự? Nó có tồn tại không?
Tôi đang giải một bài toán về biểu thức chính quy. Tôi đã có một regx như thế này [0-9]*([.][0-9]{2}). Đây là một định dạng xác thực. Bây giờ, với xác thực này, tôi muốn bao gồm số tiền 0 không được cung cấp. Ví dụ, 10 là hợp lệ, nhưng
Tôi đang nghiên cứu các câu hỏi mẫu cho kỳ thi Khoa học máy tính A và tôi không hiểu tại sao câu trả lời đúng cho câu hỏi sau lại là đúng. Hãy xem xét cách tiếp cận sau đây. public static void mystery(Danh sách số) { cho (
Được rồi, vì vậy tôi đang viết một chương trình Perl có hàm băm các giá trị mà tôi thu thập (hoàn toàn trong một chương trình hoàn toàn riêng biệt) và đưa vào tập lệnh Perl này. Băm này là băm của (chuỗi, chuỗi). Tôi muốn sử dụng 3 phương pháp để
Tôi có bảng dữ liệu như sau từ nhiều bảng khác nhau. Tôi chỉ muốn lấy giá trị tối đa từ cột thứ tư nếu cột thứ ba có giá trị "Nợ" và cột đầu tiên (Ngày) có giá trị tối đa. Giá trị cuối cùng dựa trên MAX(DATE) thay vì MAX(PRICE). Vì vậy, trong ngôn ngữ đơn giản
Tôi gặp phải tình huống kỳ lạ khi chỉ có trạng thái lỗi được lưu vào cơ sở dữ liệu. Truy vấn của tôi vẫn trả về kết quả là false mặc dù "status" phải là true. Tôi có Controller public function change_a có chức năng này
Tôi có một bảng giao dịch (được đơn giản hóa cho các cột bắt buộc): id client_id giá trị 1 1 200 2 2 150 3 1
Tôi là một lập trình viên xuất sắc, rất giỏi!