Bei Python gibt es die Funktion eval( ). Diese schaut auf den String und interpretiert es, als wäre es eine Rechnung. Das wäre glaube ich die beste Option für dein Problem.

import random

lst = ["Was ergibt: 17*3+5*2", "Was ist das Ergebnis von: 12*11+15 ", "Sag mir das Ergebnis von: ((19-1+2)*3+20)*4 "]

x = random.randint(0, len(lst)-1)
v = lst[x].split(":")[1].strip()

print(f"Ergebnis: {v} = {eval(v)}")

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.

LG

...zur Antwort

Wenn du nur automatisch verschiedene nachrichten schreiben, dann würde ich die Libary keyboard empfehlen. Mit der Libary kannst du ganz einfach die Nachricht über eine simulierte Tastatur schreiben.

import keyboard
keyboard.write("Hello world")

Wenn du es nur für den Browser brauchst und es du es effizienter haben möchtest (also kann in mehreren Tabs gleichzeitig, muss nicht offen sein), dann kann ich dir Selenium empfehlen (es ist ein wenig aufwendiger, aber es lohnt sich).

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.

LG

...zur Antwort

Dein Problem bei deinem Programm ist, dass es die falschen Datentypen verwendet. Bei Geld bietet sich Float am besten an, da es ja auch sein kann, dass es mit einem Komma ist.

Bei der Klimaanlage kann man den Typ bool( ) verwenden, aber ich würde dir eher raten, dass man ein deutsches Wort eingeben kann (und mit .lower( ) kleingeschrieben wird, un groß und Kleinschreibung zu vernachlässigen)

Zudem ist mir bei deinem Code aufgefallen, dass du Klimaanlage== True machst, was unnötig ist, da Klimaanlage schon ein boolean ist.

Wenn man das verbessert würde es so aussehen.

autopreis=float(input("Geben sie den Autopreis an "))

klimaanlage=input("Geben sie an ob eine Klimaanlage verbaut ist(ja/nein)").lower() == "ja"

if autopreis < 20000 and klimaanlage:      
     print("Auto kaufen")

elif autopreis > 20000 and klimaanlage:
    print("Auto wird nicht gekauft weil es zu teuer ist")

elif autopreis < 20000 and not klimaanlage:
   print("Auto wird nicht gekauft weil es keine Klimaanlage besitzt")
else:
   print("Auto wird nicht gekauft weil es zu teuer ist und keine Klimaanlage besitzt")

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast kannst du sie einfach stellen.

LG

...zur Antwort

Bei Android finde ich pydroid 3 am besten. Du kannst es ja mal mir der App probieren.

Aber ich würde dir dennoch empfehlen, dass du eine richtige IDE wie VS Code oder die, welche du in der Schule hast verwendest, da es so um einiges einfacher das einrücken machen kannst.

Ich hoffe ich konnte dir weiterhelfen

LG

...zur Antwort

Bei cv2 gibt es eine Funktion namens minEnclosingCircle und es gibt den kleinstmöglichen Kreis an, der alle gesuchten Objekte einschließt.

Man kann dann durch alle Objekte loopen und deren minimalen Kreis errechnen. Bei deinem Beispiel könnte man es z.B. so implementieren.

import numpy as np
import cv2

img = cv2.imread(r'image.jpg')

kernel = np.ones((7, 7), np.uint8)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_bound = np.array([20, 80, 80])
upper_bound = np.array([30, 255, 255])

mask = cv2.inRange(hsv, lower_bound, upper_bound)

mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

segmented_img = cv2.bitwise_and(img, img, mask=mask)

contours, hierarchy = cv2.findContours(
    mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in contours:
    (x,y),radius = cv2.minEnclosingCircle(c)
    center = (int(x),int(y))
    radius = int(radius)
    cv2.circle(img,center,radius,(0,0,0),2)

cv2.imshow("Output", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

Ich hoffe ich konnte dir helfen.

LG

...zur Antwort

Du Du kannst mit "thickness=cv2.FILLED" alles einfärben.

Also dann an deinem Beispiel:

import numpy as np
import cv2

img = cv2.imread('image.jpg')

kernel = np.ones((7,7),np.uint8)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_bound = np.array([20, 80, 80])     
upper_bound = np.array([30, 255, 255])

mask = cv2.inRange(hsv, lower_bound, upper_bound)

mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

segmented_img = cv2.bitwise_and(img, img, mask=mask)

contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

output = cv2.drawContours(img, contours, -1, color=(0, 0, 255), thickness=cv2.FILLED)

cv2.imshow("Output", output)

cv2.waitKey(0)
cv2.destroyAllWindows()

Ich hoffe ich konnte dir helfen.

LG


...zur Antwort

Du kannst es vielleicht mit dem chromedriver-autoinstaller versuchen. Es ladet automatisch die neuste Version von dem Chromedriver herunter. Ich hab es mal probiert und es hat auf meinem PC mit Auto-Py-To-Exe geklappt.

Du kannst es z.B. so implementieren:

from selenium import webdriver
import chromedriver_autoinstaller
import time

chromedriver_autoinstaller.install()

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options)
driver.maximize_window()

driver.get("https://www.gutefrage.net/home/meine/alle")
time.sleep(5)
driver.close()

Wenn du aber nur Daten aus einer Website herausfinden möchtest, dann würde ich dir beautifulsoup empfehlen. Es ist intuitiver (einfacher) und es muss auch kein Fenster geöffnet werden.

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.

LG

...zur Antwort

Ich würde es nicht mit den Cookies machen, sondern dass das Programm sich selbst vor dem eigentlichen Programm sich selber anmeldet. Also dann bei Twitch z.B. so:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path = r'selenium_webdriver\chromedriver.exe') 
driver.get("https://www.twitch.tv/") 

wait = WebDriverWait(driver, 10)

driver.find_element(By.XPATH,"//div[text()='Anmelden']").click()

username = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@id='login-username']")))
username.send_keys('test_username')
password = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@id='password-input']")))
password.send_keys('test_passwort')

#Hier kommt dein weiterer Code hin

driver.close()

Ich hoffe ich konnte dir weiterhelfen

LG

...zur Antwort

Ich weiß halt nicht, was du mit "sortieren" meinst, aber wenn du die Zeilen einfach einzeln verwenden möchtest, dann kannst du es einfach so machen.

with open(r"testing\test.txt","r") as f:
   for item in f:
      print(item)

Wenn du weitere Fragen hast, dann kannst du sie mir einfach stellen.

LG

...zur Antwort

Also bei dem Laufzeitmodell wird bei der Implantation der Quelltext in das Laufzeitmodell aufgeteilt. Man unterteil das Laufzeitmodell in ID, Typ und den Wert.

Die ID wird "zufällig" vergeben und ist für das Objekt einzigartig (außer es ist ein mutable datatype und man kann die id mit dem Befehl "id(variable)" bei dem Programm herausfinden)

Der Typ gibt an, was es für ein Datentyp in der Funktion gespeichert ist und wie das Programm in speichern muss (es gibt z.B. int (--> integer --> Ganzzahl) float (--> float --> Gleitkommazahl) bool (--> bool --> Boolscher Wert --> Wahr/Falsch) list (--> list --> Liste) str(--> String --> Zeichenfolge) und auch andere) (Man kann den Typ von dem Inhalt der Variable bestimmen, indem man type(variable) eingibt).

Zuletzt gibt der Wert an, was in der Variable als Inhalt drin ist. (also was in der Variable gespeichert ist) (man kann ihr einfach mit "print(variable)" ausgeben)

Wenn du dich in die Materie einlesen möchtest, dann kanst du es am besten mit dem Rheinwerk Computing machen (https://openbook.rheinwerk-verlag.de/python/07_001.html)

Also wenn man mit dem Wissen an die Aufgaben rangeht ist es nicht so schwer.

  1. Beispiel: ID --> zufällig (man hat exemplarisch die ID == 140170234798320 gegeben), Typ --> Bool (boolean, da es nur entweder True oder False abgespeichert werden soll und es keine Anführungszeichen daran sind (sonst String)), Wert --> True (ist der Inhalt der Variablen)
  2. Beispiel: ID --> zufällig, Typ --> Str(String --> Zeichenfolge, da es ein Wort und in Anführungszeichen ist), Wert --> Langsam
  3. Beispiel: ID --> zufällig, Typ --> int (Integer , da es eine Ganzzahl ist), Wert --> 57.
  4. Beispiel: ID --> gleiche id wie im Beispiel 2, Typ --> str (der gleiche Typ, wie im Beispiel 2 und da war es ein String) Wert --> Langsam (gleicher Wert, wie im Beispiel 2)

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen

...zur Antwort

Du kannst einfach den path zu deinem Ordner mit angeben.

import json

with open(r'pfad\zu\deinem\ordner\names.json') as f:
    d = json.load(f)
    print(d)
...zur Antwort

Ihr könntet mit sklearn die Lineare Regressionsrate berechnen und mit matplotlib es reinzeichnen.

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt

x= np.array( [145, 130, 130, 120, 120, 140, 140, 120, 172, 150, 140, 130, 130, 110, 150]).reshape(-1, 1)
y= [233, 250, 204, 236, 354, 192, 294, 263, 199, 168, 239, 275, 266, 211, 283] 
lm = linear_model.LinearRegression()
lm.fit(x, y) 
plt.scatter(x, y, color = "r",marker = "o", s = 30) #https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers
y_pred = lm.predict(x)
plt.plot(x, y_pred, color = "k")
plt.ylabel("Cholesterin")
plt.xlabel("puls")
plt.show()

Alternativ könnte man es auch so machen:

import matplotlib.pyplot as plt
from scipy import stats

x= [145, 130, 130, 120, 120, 140, 140, 120, 172, 150, 140, 130, 130, 110, 150]
y= [233, 250, 204, 236, 354, 192, 294, 263, 199, 168, 239, 275, 266, 211, 283] 

slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
  return slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y, color = "r",marker = "o", s = 30)
plt.plot(x, mymodel, color = "k")
plt.ylabel("Cholesterin")
plt.xlabel("puls")
plt.show()
...zur Antwort

Wenn es dir egal ist, ob es eine .csv oder eine .xlsx ist, dann kannst du statt der csv library die xlsxwriter Library verwenden.

import requests
import xlsxwriter as xls
from bs4 import BeautifulSoup

first_line = ['Position', 'Team', 'Played', 'Won', 'Drawn', 'Lost', 'For', 'Against', 'GD', 'Points']

result = requests.get("https://www.bbc.co.uk/sport/football/tables")
src = result.content
soup = BeautifulSoup(src, 'html.parser')
table = soup.find_all("table")
league_table = table[0] 
teams = league_table.find_all("tr")

workbook = xls.Workbook('prem_table_bs.xlsx')
worksheet = workbook.add_worksheet("My sheet")

row = 0
col = 0

for item in first_line:
   worksheet.write(row, col, item)
   col += 1

teams = league_table.find_all("tr")

for team in teams[1:21]:
   col = 0
   row += 1
   stats = team.find_all("td")

   for item in stats:
      if "team" in item.text or "against" in item.text:
         continue
      worksheet.write(row, col, item.text)
      col += 1
  
workbook.close()

Also eine CSV-Datei (comma separated value) sind Tabellen, welche mit einem Komma getrennt sind und mit jedem Texteditor zu öffnen sind.

Bei einer xlsx-Datei gibt es sowohl in Spaten als auch Zeilen schreiben. Mit dem Dateiformat kann man zudem auch Formeln öffnen und mehrere Worksheets bearbeiten

https://de.acervolima.com/unterschied-zwischen-csv-und-excel/

...zur Antwort

Man kann eine Website zum Beispiel mit der requests und der beautifulsoup4 library oder mit der selenium library auslesen.

Wenn du Hilfe bei den Libraries oder auch ein Beispielprogramm von deren Libraries brauchst, dann kannst du mich einfach anschreiben

...zur Antwort

Das was du beschrieben hast kannst du mit if var_a in var_b: machen. Es gibt an, ob der Buchstabe/Wort im Satz vorhanden ist. Z.b. bei deinem Programm wäre es:

test = input("magst du mich: ").lower()
if "ja" in test:
    print("Das freut mich")
else:
    print("Schade")

(und du kannst auch .lower() verwenden, sodass der Satz kleingeschrieben wird und nicht solche Komplikationene mit "Ja != ja" entstehen.)

...zur Antwort

Dein Programm kann man wie schonmal erwähnt so machen:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import subprocess
import random

PATH = "selenium_webdriver\chromedriver.exe"

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options, executable_path=PATH)
driver.maximize_window()

liste = ["https://www.gutefrage.net/frage/python-tabs-schliessen","https://www.gutefrage.net/home/meine/alle","https://www.youtube.com/","https://www.reddit.com/"]

while True:
    picked_url = random.choice(liste)
    driver.get(picked_url)
    time.sleep(300)

# Es kommt keine Fehlermeldung aber egal wie lange ich es laufen lies es Öffnete den browser nicht

...zur Antwort

Das mit dem schließen von einem neuen Tab kann man nicht mit webbrowser sondern nur mit Selenium machen. Wenn du es mit Selenium machst, dann kann der Code so aussehen.

from cmath import pi
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import subprocess
import random

liste = ["https://www.idealo.de/",
         "https://www.gutefrage.net/home/meine/alle", "https://www.youtube.com/", "https://www.reddit.com/"]

PATH = r"selenium_webdriver\chromedriver.exe"

# nicht notwendig, aber ich finde es nützlich
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options, executable_path=PATH)
driver.maximize_window()

def neuer_link_gleicher_tab(picked_url):
    driver.get(picked_url)

def offnen_neuer_tab_alt_schliesen(picked_url):
    driver.switch_to.window(driver.window_handles[0])
    driver.execute_script(f'window.open("{picked_url}","_blank");')
    driver.close()

driver.get(random.choice(liste))
while True:
    time.sleep(3)
    picked_url = random.choice(liste)
    # neuer_link_gleicher_tab(picked_url)
    offnen_neuer_tab_alt_schliesen(picked_url)

# Wie kann ich das machen das er nach den 300 sekunden entweder
# in dem gleichen tab einen neuen link öffnet oder das er ein neuen tab öffnet und den alten schliest.
# Danke im Vorraus
...zur Antwort

Ich denke, dass du bei text kein String übergibst und deshalb ein Fehler kommt. Ich hab es mal unter normalen Umständen ausprobiert und es hat geklappt.

def file_write(text: str) -> str:
    with open("test.txt", 'a+') as file_:
        file_.write('\n' + str(text))

file_write("Hello world")
...zur Antwort