T在as-is
内有N个数组输入。分配输入后,您需要检查数组输入是否为静态。我的想法是使函数获得import re, itertools
from selenium import webdriver
from bs4 import BeautifulSoup as BS
def xpath_soup(element):
components = []
child = element if element.name else element.parent
for parent in child.parents:
siblings = parent.find_all(child.name, recursive=False)
components.append(
child.name
if siblings == [child] else
'%s[%d]' % (child.name, 1 + siblings.index(child))
)
child = parent
components.reverse()
return '/%s' % '/'.join(components)
def main():
driver = webdriver.PhantomJS(executable_path='phantomjs.exe')
driver.set_window_size(1400,1000)
driver.get("https://www.pinterest.com/search/pins/?q=old")
buttons = driver.find_elements_by_xpath('//button[@data-test-id="seemoretoggle"]');
for btn in buttons:
btn.click()
html = driver.page_source
soup = BS(html, 'html.parser')
elem = soup.find(string=re.compile('Tiny House interior'))
print(elem)
xpath_soup(elem)
print(xpath_soup(elem))
if __name__ == '__main__':
main()
返回布尔值和3个其他函数。我将在下面显示它们。如果函数返回true,那么我必须在终端中打印某种内容,使其以某种方式仅适用于main int()
,当我尝试在分配输入后返回IsMonoStatic(T)
的true时,终端崩溃,字面意思是不打印消息,并且终端只是冻结,我需要使用IsMonoStatic(T)
才能退出正在执行的程序。
当IsMonoStatic(T)返回true时,第一个条件在终端上起作用
IsMonoNotSmaller(T)
但是当我尝试其他输入时,程序崩溃了。
这是我的代码程序。
ctrl + c
我希望输出
4
1
1
1
1
Array monotonik statik
但是输出在这里不起作用
#include <stdio.h>
#include "array.h"
#include "boolean.h"
boolean IsMonoNotSmaller (TabInt T)
{
// kamus lokal
IdxType i; boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true; // masih dalam kondisi cek
while ((i<GetLastIdx(T))&&(cek==true)){
if (T.TI[i]<=T.TI[i+1]){
cek = true; // benar maka cek lagi
i++;
} else{
cek = false; // berhenti loop
}
}
return cek;
}
boolean IsMonoNotGreater (TabInt T)
{
// kamus lokal
IdxType i; boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true;
while ((i<GetLastIdx(T))&&(cek==true)){
if (T.TI[i]>=T.TI[i+1]){
cek = true; // benar maka cek lagi
i++;
} else{
cek = false; // berhenti loop
}
}
return cek;
}
boolean IsMonoStatic (TabInt T)
{
// kamus lokal
IdxType i;
boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true; // tetap ngecek
while ((i<GetLastIdx(T))&&(cek=true)){
if (T.TI[i]==T.TI[i+1]){
cek = true;// belum ditemukan & ttp lanjut pncarian
i++;
} else{ // != berhenti cek
cek = false;
}
}
return cek;
}
int main(){
/* kamus lokal */
TabInt T;
/* algoritma */
// read input
BacaIsi(&T);
if (IsMonoStatic(T)==true){
printf("Array monotonik statik\n");
} else {
if (IsMonoNotSmaller(T))
printf("Array monotonik tidak mengecil\n");
if (IsMonoNotGreater(T))
printf("Array monotonik tidak membesar\n");
printf("Array tidak monotonik\n");
}
return 0;
}
答案 0 :(得分:1)
问题出在您的while循环上。
while ((i<GetLastIdx(T))&&(cek=true)){
在这里,我认为您打算写cek == true
。
看看这里的控制流程,我们可以使用for循环来实现。这是一个示例,重写IsMonoStatic
:
boolean IsMonoStatic (TabInt T)
{
for(IdxType i = GetFirstIdx(T); i < GetLastIdx(T); i++)
{
if(T.TI[i] != T.TI[i + 1])
{
return false;
}
}
return true;
}