Python – die neusten Beiträge

Pygame hängt sich bei while True: loop auf?

Hallo,

ich programmiere gerade ein Spiel in Pygame. Auf jeden Fall möchte ich den Ninja Wurfsternen (&anderen Waffen)Ammo geben, dass man eine bestimmte Anzahl von diesen hat und diese nicht spammen kann. Wenn man Space drückt, wird der Ammo Variable eins abgezogen und wenn der Ammo (heißt es der Ammo? ) höher als 0 ist, wird der Befehl self.shoot() ausgeführt. Jetzt mein Problem: Egal, welche Nummer die Variable hat (außer Null), kann ich einmal schießen und danach nicht mehr, auch wenn ich Space drücke. Ich weiß nur nicht wieso. Wenn ich es in einen while True, loop packe, hängt sich pygame auf. Nur wie kann ich das fixen, dass ich öfter als 1 Mal schießen kann. Hier mein benötigter Code (ohne den While True loop):

class Player(pg.sprite.Sprite):

def __init__(self, game, x, y):

self.weapon = 'blowpipe'

self.shurikan = False

self.blowpipe = False

self.xp = PLAYER_XP

self.shoot_ammo = True

self.BLOWPIPE_AMMO = 5

self.SHURIKAN_AMMO = 5

def get_keys(self):

keys = pg.key.get_pressed()

if keys[pg.K_SPACE]:

if self.weapon == 'blowpipe' and self.shoot_ammo == True:

self.BLOWPIPE_AMMO -= 1

if self.BLOWPIPE_AMMO < 0:

self.BLOWPIPE_AMMO = 0

if self.BLOWPIPE_AMMO == 0:

self.shoot_ammo = False

if self.BLOWPIPE_AMMO > 0:

self.shoot()

if self.weapon == 'shurikan' and self.shoot_ammo == True:

self.SHURIKAN_AMMO -= 1

if self.SHURIKAN_AMMO < 0:

self.SHURIKAN_AMMO = 0

if self.SHURIKAN_AMMO == 0:

self.shoot_ammo = False

if self.SHURIKAN_AMMO > 0:

self.shoot()

def shoot(self):

if self.shoot_ammo == True:

now = pg.time.get_ticks()

if now - self.last_shot > WEAPONS[self.weapon]['rate']:

self.last_shot = now

dir = vec(1, 0).rotate(-self.rot)

EinegleicheListegibtesfürBlowpipe.

pos = self.pos + BARREL_OFFSET.rotate(-self.rot)

self.vel = vec(-WEAPONS[self.weapon]['rate'], 0).rotate(-self.rot)

for i in range(WEAPONS[self.weapon]['count']):

spread = uniform(-WEAPONS[self.weapon]['spread'], WEAPONS[self.weapon]['spread'])

Blowpipe(self.game, pos, dir.rotate(spread))

Außerdem gibt es eine Weapons Liste in einem anderen File:

WEAPONS['blowpipe'] = {'img': 'blowpipe.png',

'speed': 500,

'lifetime': 600,

'rate': 300,

'kickback': 0,

'spread': 5,

'damage': 3,

'size': 'blowpipe',

'count': 1}

Eine ähnliche Liste benutze ich für den Shurikan. Thx

Computer, Mac, programmieren, Informatik, Python, Python 3, Pygame, VS Code

Python: Wie kann ich feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss?

Hey, ich möchte feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss. Dazu finde ich nur leider nichts im Internet.

import tkinter as tk from tkinter import *

modul = tk.Tk()
modul.geometry("900x900")
modul.title("Bunt3x3")
modul.resizable(width=False, height=False)

r = "red"
y = "yellow"
g = "green"
b = "blue"

def change():
  if feld1["bg"] == r:
    feld1.config(bg=g)
    feld3.config(bg=g)
    feld5.config(bg=g)
    feld7.config(bg=g)
    feld2.config(bg=b)
    feld4.config(bg=b)
    feld6.config(bg=b)
    feld8.config(bg=b)

    feldlabel.config(text="Rot & gelb")

  elif feld1["bg"] == g:
    feld1.config(bg=r)
    feld3.config(bg=r)
    feld5.config(bg=r)
    feld7.config(bg=r)
    feld2.config(bg=y)
    feld4.config(bg=y)
    feld6.config(bg=y)
    feld8.config(bg=y)

    feldlabel.config(text="Gruen & blau")

feld1 = tk.Frame(bg=r, width=300, height=300)
feld1.grid(column=1, row=1)
feld3 = tk.Frame(bg=r, width=300, height=300)
feld3.grid(column=3, row=1)
feld5 = tk.Frame(bg=r, width=300, height=300)
feld5.grid(column=1, row=3)
feld7 = tk.Frame(bg=r, width=300, height=300)
feld7.grid(column=3, row=3)
feld2 = tk.Frame(bg=y, width=300, height=300)
feld2.grid(column=2, row=1)
feld4 = tk.Frame(bg=y, width=300, height=300)
feld4.grid(column=1, row=2)
feld6 = tk.Frame(bg=y, width=300, height=300)
feld6.grid(column=3, row=2)
feld8 = tk.Frame(bg=y, width=300, height=300)
feld8.grid(column=2, row=3)

feld = tk.Frame(bg="white", width=300, height=300).grid(column=2, row=2)
feldlabel = tk.Label(text="Gruen & blau", bg="white", fg="black", font=("Arial", 15, "bold"))
feldlabel.grid(column=2, row=2)
feldbutton = tk.Button(text="Farbe aendern!", font=("Arial", 15, "bold"), bg="white", fg="black", command=change).place(x=370, y=470)
modul.mainloop()
programmieren, Array, Informatik, Python, Zusammenfassung, Variablen, list, Tkinter

PermissionError: [WinError 5] Zugriff verweigert?

Hi ich weiß nicht wie ich das Problem lösen soll. Ich führe Python als Administrator aus. (Win 7)

Code:

from selenium import webdriver

import time

url = 'https://youtube.com/'

driver = webdriver.Chrome(r'C:\Users\Lars\Downloads\chromedriver_win32')

driver.get(url)

Fehler:

Traceback (most recent call last):

 File "C:\Program Files (x86)\Python37-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start

  stdin=PIPE)

 File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 775, in __init__

  restore_signals, start_new_session)

 File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 1178, in _execute_child

  startupinfo)

PermissionError: [WinError 5] Zugriff verweigert

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

 File "C:\Users\Lars\Desktop\emails.py", line 5, in <module>

  driver = webdriver.Chrome(r'C:\Users\Lars\Downloads\chromedriver_win32')

 File "C:\Program Files (x86)\Python37-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__

  self.service.start()

 File "C:\Program Files (x86)\Python37-32\lib\site-packages\selenium\webdriver\common\service.py", line 88, in start

  os.path.basename(self.path), self.start_error_message)

selenium.common.exceptions.WebDriverException: Message: 'chromedriver_win32' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

PC, Computer, Technik, Programmiersprache, Python, Selenium

SymPy: Warum funktioniert hier das Vereinfachen eines mathematischen Ausdrucks nicht?

Ich schaue mir gerade das Python-Modul SymPy an und versuche mich als erstes Beispiel im fitten einer Funktion f(x) durch ein Funktionsset (fi,) in einem gegebenen Intervall.

Es soll als Ergebnis die gefittete Funktion u(x) herauskommen:



import sympy as sym

def functionFit(f, funcset, interval):
  N = len(funcset) - 1
  A = sym.zeros(N + 1, N + 1)
  b = sym.zeros(N + 1, 1)
  x = sym.Symbol('x')

  for i in range(N + 1):
    for j in range(i, N + 1):
      A[i, j] = sym.integrate(
        funcset[i] * funcset[j],
        (x, interval[0], interval[1]))
      A[j, i] = A[i, j]

    b[i, 0] = sym.integrate(funcset[i] * f, (x, interval[0], interval[1]))

  c = A.LUsolve(b)
  u = 0

  for i in range(len(funcset)):
    u += c[i, 0] * funcset[i]

  return u, c

x = sym.Symbol('x')
f = 10 * sym.cos(x) + 3 * sym.sin(x)
fooset = (sym.sin(x), sym.cos(x))
interval = (1, 2)

print("function to approximate:", f)
print("Basic functions:")

for foo in fooset:
  print(" - ", foo)

u,c = functionFit(f, fooset, interval)

print()
print("simplified u:")
print(sym.simplify(u))
print()
print("simplified c:")
print(sym.simplify(c))  

Wenn ich dieses simple Beispiel laufen lasse, erhalte ich:

function to approximate: 10 * cos(x)
Basic functions:
  - sin(x)
  - cos(x)
simplified u: 10 * cos(x)

simplified c:
Matrix([[0], [10]])

womit ich zufrieden bin.

Setze ich aber

f = 10sym.cos(x) + 3sym.cos(x)

dann erhalte ich:

function to approximate: 3sin(x) + 10cos(x)
Basic functions:
 - sin(x)
 - cos(x)
simplified u: (12sin(2)2sin(4)sin(x) + 3sin(8)sin(x) + 12sin(2)sin(x) + 40sin(2)*2sin(4)cos(x) + 10sin(8)cos(x) + 40sin(2)cos(x))/(2(sin(4) + 2*sin(2)))

simplified c:
Matrix([[3], [10]])

Der Ausdruck für u ist natürlich richtig, aber wieso schafft es SymPy nicht, den Ausdruck auf



zu vereinfachen?

Mache ich hier als Anfänger etwas falsch oder kann ich da nicht mehr erwarten? Dann wäre SymPy aber ziemlich unbrauchbar, wenn es schon bei derart elementaren Dingen versagt.

Als Vergleich: Mathematica reduziert das ausgewiesene u(x) schnell und sauber auf den richtigen Ausdruck. Wenn man mit SymPy schon so etwas nicht richtig hinkriegt, lohnt sich die weitere Beschäftigung damit eigentlich nicht. Ich hoffe inbrünstig, dass ich etwas falsch mache. Ich bitte um Hinweise was das sein könnte!

Computer, Mathematik, programmieren, Python

Python 3: Ich habe Fragen zur Implementation des Huffman-Code. Könnt ihr mir helfen?

Hallo Leute,

ich hoffe, dass ich hiermit nicht den Shitstorm of Doom heraufbeschwöre, aber ich komme seit fünf Tagen partout nicht weiter.

1) (2 Punkte) Gegeben sei folgende Nachricht: ”Mississippi River in Ontario isn’t Mississippi River in Mississippi!”

Zeichne den zugehörigen Huffman-Baum und stelle die Codetabelle auf, wie sie es in der Vorlesung gelernt haben. Geben Sie alle erforderlichen Werte an! Wie lautet die oben angegebene Nachricht in ihrer codierten Form?

2) (2 Punkte) Schreibe ein Python 3.7.x Programm, welches die in der Aufgabe 11.1 aufgestellte Codetabelle beinhaltet. Das Programm soll Befehle encode und decode verstehen und die darauffolgende Eingabe codieren oder decodieren können. Falsche Eingaben sind mit einer Warnung in der Konsole zu quittieren. Geben jeweils 5 Testfälle für Codierung und Decodierung an. Zusätzlich gebe an, wie Deine Implementierung die Nachricht

3) (4 Punkte) Schreibe ein in Python 3.7.x Programm, welches eine Eingabe (Nachricht) über die Konsole entgegennimmt, sie analysiert und basierend darauf eine Codetabelle aufbaut.

  • Gebe diese Codetabelle in der Konsole aus.
  • Gebe die codierte Eingabe in der Konsole aus.
  • Implementiere eine Funktion zur Decodierung und gebe die decodierte Nachricht zur Verifikation in der Konsole aus.

Setze die Befehle newbase und showtable um. Ermögliche damit eine neue Eingabe und lasse für diese eine neue Codetabelle berechnen und gegebenenfalls ausgeben. Setze weiterhin Befehle encode und decode um, wie Du es in der Aufgabe 11.2 gemacht hast.

Hinweise:

Zur Lösung dieser Aufgabe dürfen built-in Sortiermethoden verwendet werden. Denke daran, dass nicht alle Datentypen geordnet sind. Dennoch können hier auch solche Datentypen sehr hilfreich sein.

Nicht lauffähige Programme werden nicht bewertet, dabei gilt als Maßstab NUR die Ausführbarkeit in der Konsole!

Aufgabe 1 hab ich noch lösen können,

Ich weiß, im Netz gibt es gefühlt 3000 Huffman Code-Tutorials, aber die sind alle auf fortgeschrittenen Niveau und erklären auch nicht, wie ich diese Code-Tabelle implementieren soll. Zur Erklärung:

  • Spalte 1: Die relative Häufigkeit, wie oft ein Zeichen allgemein im String vorkommt.
  • Spalte 2: Der Logarithmus dualis:



  • Spalte 3: Blockcode der Reihe nach aufgeschrieben
  • Spalte 4: Der Huffman Code (auf den 0 und 1 in der Grafik basierend)
  • Spalte 5: Gewichtete Codelänge (Anzahl der Bits im Huffman-Code * Relative Häufigkeit)

Wie kann ich das in Python berechnen lassen und zusätzlich noch in so einer Tabellenform ausgeben? Dazu müsste man doch alle Werte von diesem Baum manuell eintragen, oder nicht?

Kann ich bei Aufgabe 2) nicht einfach die Variablen neu definieren, z.B. "M == 000" oder ist das geschummelt?

Bild zum Beitrag
Computer, Technik, programmieren, Informatik, Python, Technologie

Physik / Python: Wie kann ich den schrägen Wurf mit Luftwiderstand berechnen?

Guten Tag!

Ich habe folgendes Problem: Schon seit einer Woche versuche ich, eine Physik-Aufgabe zu lösen. Leider habe ich da nicht viel Erfolg von verstehe von Python rein gar nichts. In der Schule habe ich schon nachgefragt, aber leider keine plausible Erklärung bekommen.

Also wir haben eine Aufgabe bekommen, bei der wir den schrägen Wurf einmal mit und einmal ohne Luftwiderstand berechnen sollen. Dazu haben wir die Angaben:

alpha = 50
v0 = 70
cw = A = rho = m = 1

Ich komme da nicht weiter und weiß nicht einmal, welche Werte dabei herauskommen sollen. Könnte mir das bitte jemand erklären? Ich verstehe weder mit, noch ohne Luftreibung.

Zurzeit habe ich das geschrieben:

frommath import(sqrt, pi, sin, cos)

g = -10 #Erdbeschlaunigung
s0 = 0 #Anfangspunkt auf x-Achse
v0 = 70 #Anfangsgeschwindigkeit
alpha = 50 #Abwurfwinkel in Grad
beta = alphapi / 180 #Winkel in RAD
vx1 = v0cos(beta)
vy1 = v0sin(beta)
cw = 1 #Luftwiederstandsbeiwert
rho = 1 #Dichte
A = 1 #Querschnittsfläche
m = 1 #Masse
k = (0.5cwArho) / m
j = g + k
z = g - k
t = 1
sum = 0

while t < 10:
  sum = sum + t2
  t = t + 0.001
  ay = g - kvy**2
  ax = -kvx12
  vy = vy1 + zt
  vx = vx1 + jt
  sx = s0 + vxt + 0.5jt2
  sy = vyt + 0.5zt2
  vges = sqrt(vy2 + vx2)
  
print("vx=", vx)
print("vy=", vy)
print("vgesammt=", vges)

Danke!

Im falle...überall wo ein zweier angehängt ist bedeutet es hoch zwei, leider aber ging das hoch beim herein kopieren verloren.

Könnte mir jemand die dazugehörigen Formeln aufschreiben, da ich nirgends eine passable Formel für den schiefen Wurf mit Luftwiderstand finde. Danke das wäre mir von großer Hilfe!!!!

LG Saramarie

Schule, Physik, Python

UML Diagramm in Python umsetzen?

Chrutschow. Nachdem mein Versuch, vorgegebene Datentypen in ein Klassendiagramm zu schreiben, bemerkenswert kläglich scheiterte, heute nun the-other-way-round: Ein UML Diagramm in Python umsetzen:

Insbesondere frage ich mich, wie bei der Implementierung zwischen Vererbung, Aggregation und gerichteten Assoziationen unterschieden wird. Scheinbar gibt es dafür 2000 Tutorials mit 30000 unterschiedlichen Lösungsansätzen. Außerdem weiß ich nicht, was genau die einzelnen Objekte tun. Zum Beispiel steht beim Professor nur Kostencenternummer als geschützte Variable. Und der WiMi macht anscheinend gar nichts. Was schreibe ich in die Getter und Setter?

Hier der bisherige Ansatz:

######Vererbung
"""This programm models the UML diagram of the inheritante between
members and professors.
"""
class Member:
  name = ""

  def __init__(self, name, id_number):
    self.name = name
    self.id_number = id_numer

class Professor(Member):
  def __init__(self, name, id_number, cost_center_no):
    self.name = name
    self._cost_center_no = _cost_center_no

  def get_cost_center_no(self):
    # Wie Kostenstellennummer umsetzen?

class WiMi(Member):
  def __init__(self, name, id_number):
    self.name = name             

Aggregation

class Presentation:
  def __init__ (self, title, date):
    self.title = name
    self.date = date

  def change_date(self):
    print ("Class Owner: method1")

Gerichtete Assoziation

class research_group:
  def __init__(self, name, total_presentation):
    self.name = name
    self.total_presentation = total_presentation
    self.name = name

  def get_members(id_number, name, total_representation):
  
  def get_head (id_number, name, total_reprensentation)

  def set_head (id_number, name, total_reprensentation)

  def add_member (id_number, name, total_representation)

  #Was machen diese Methoden?
Bild zum Beitrag
programmieren, Informatik, Python, UML, Klassendiagramm, Objektorientiert, Objektorientierte Programmierung, OOP Programmierung

Meistgelesene Beiträge zum Thema Python