Поделитесь своими знаниями, ответьте на вопрос:
В языке запросов поискового сервера для обозначения логических операций «ИЛИ»Используется символ | », а для обозначения логической операции «И» — символ «8».в таблице приведены запросыи количество найденных по ним страниц некоторогосегмента сети Интернет.Считается, что все запросывыполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполненияЗапросов, ЗапросНайдено страниц (в тысячах)Царевна е Лягушка700Царевна3200Цареева Лягушка5000Какое количество страниц е тысячах) будет найдено по запросу Wягушка?
import codecs #for UTF-8
def file_existence(filename): #check if source file exists
try:
f = open(filename, "r")
f.close()
print("File '" + filename + "' is opened\n")
return 0
except IOError:
print("File '" + filename + "' is not accessible")
return 1
def file_size(filename): #lines in source file
with open(filename) as f:
for i, l in enumerate(f):
pass
return i + 1
def main():
fread_name = "source_data.txt"
fwrite_name = "result.txt"
if(file_existence(fread_name)==0):
F1 = open(fread_name,"r")
#F2 = open(fwrite_name, "w")
F2=codecs.open(fwrite_name, "w", "utf-8-sig")
size=file_size(fread_name)
source_data=F1.readlines()
x = [float(num.split('=')[1]) for num in source_data] #numbers from string only
y=[0]*size #empty array for data
for i in range (0,size):
if x[i]<-5:
y[i] = ((((80*x[i]**7)+(61*x[i]**2)+17)**5)+16*x[i]**7)/((((32*x[i]**3)+x[i]**3)**6)-((36*x[i]**2)+54)**4)
elif x[i]>=-5 and x[i]<1:
y[i] = (((((24*x[i]**7)+(44*x[i]**2)+93)**5)**(1/2))-(37*x[i]**4) )/( (((31*x[i]**5)+(x[i]**2))**5) + (((26*x[i]**2)-52))**5)
elif x[i]>=1:
y[i]=((((45*x[i]**8)+(33*x[i]**2)+12)**4)-(47*x[i]**5))/((((36*x[i]**8)-(x[i]**3))**4)+((91*x[i]-29)**3)**(1/2))
for i in range (0,size):
print(str(i+1)+") "+"X = "+str(x[i]))
print("\n")
for i in range (0,size):
print("If X="+ str(x[i])+ " Y= " + str(y[i]))
for i in range (0,size):
#F2.write("If X="+ str(x[i])+ " Y= " + str(y[i])+"\n")
F2.write("При x = "+str(x[i])+" значение y = "+str(y[i])+"\n")
F1.close()
F2.close()
print("\nAll data saved in " + fwrite_name)
input("\nPress any key to exit...")
else:
decision=input("\nCreate a stock file 'source_data.txt' for this program with X from -15 to 7? (Y/N): ")
if decision=="Y" or decision=="y":
f = open(fread_name, "w")
for i in range (-15,7):
f.write('x='+str(i)+"\n")
f.write('x='+str(i+1)) #without last empty line
f.close()
file_existence(fread_name)
main()
elif decision=="N" or decision=="n":
input("Press any key to exit...")
else:
print("Wrong input\n")
main()
if __name__== "__main__":
main()
Объяснение:
В случае отсутствия source_data.txt программа спрашивает создать ли файл со значениями Х от -15 до 7, т.е. в принципе можно смело запускать программу без файла source_data.txt + программа сама все посчитает и создаст файл result.txt в этой же папке, где и сама программа. Единственное, чего не удалось реализовать - это округление до 3 знаков. Формулы проверены в wolframalpha, но 100% не могу сказать, что все верно, желательно проверить.
P.S. код не самый суперский, но работает почти как надо :)