Új hozzászólás Aktív témák
-
kovisoft
őstag
-
samujózsi
senior tag
válasz
Janos46 #2478 üzenetére
Valahova a program elejére egy
# encoding: utf-8
sort tegyél be!
Egyébként meg erősen javasolt lenne python3-ra váltani.
Ja, ha a fenti komment sor beszúrása nem segít, akkor a stringeknél jelezd, hogy unicode-ot használsz:u"Meddig
várjak:"
Mindez persze azt feltételezi, hogy a szövegszerkesztőd unicode karakterekkel dolgozik. -
axioma
veterán
válasz
Janos46 #2472 üzenetére
Hasznald a programkod formazast (< / > jel a smiley-k felett).
Akkor ilyen lesz:from time import sleep
x=int(input("Meddig várjak: "))
for i in range(x,0,-1): # így számol visszafelé 0,-1
print(i, "sec", end="") # Kiírja a számlálás számát
sleep(1) # Várakozik 1 másodpercet
print("\r", end="") # Törli a számot
print("Letelt az idő") -
samujózsi
senior tag
válasz
Janos46 #2447 üzenetére
Csak tipp: dropbox helyett inkább github vagy valami hasonló oldal jobb lenne.
Amiért meg eredetileg benéztem: Why Python is considered the top programming language ahead of JavaScript and C++
Az imént futottam bele, hátha érdekel valakit. -
kovisoft
őstag
válasz
Janos46 #2444 üzenetére
Nálam mondjuk a másodikat is végrehajtja, de alapvető szabály, hogy lebegőpontos számokat nem hasonlítunk == operátorral, mert a lebegőpontos számábrázolásnak véges a pontossága, így csak az garantálható, hogy a végeredményül kapott szám egy adott pontosságon belül lesz a matematikailag helyes végeredményhez. Itt egy példa, ami szemlélteti a fentieket, ennek matematikailag 1-et kellene adnia, de a lebegőpontos számábrázolás miatt nem annyi lesz, csak közelítőleg:
>>> x=1.0
>>> x=x/3.0-1.0
>>> x=(x+1.0)*3.0
>>> x
0.9999999999999998
A te példádban szereplő 5+5 esetében nem ez a helyzet (nálam legalábbis), de attól még érdemes lecserélni az == operátort egy valamilyen 10-epszilon és 10+epszilon közötti vizsgálatra. A helyedben én külön-külön kiíratnám a változók és == kifejezések értékét, hogy lásd, min csúszik el a dolog. -
axioma
veterán
válasz
Janos46 #2437 üzenetére
Hacsak nem kezelsz negativ magassagot, az altalanos esetben mindig 2 megoldas fog kijonni. Nem tudod mashogy kenyszeriteni hogy melyikre gondolsz.. hacsak be nem kered kulon adatkent (ami meg ekvivalens azzal, hogy negativban kered a masodik magassagot, ellenben a korlappal megadasnal is hasznalhato).
-
kovisoft
őstag
válasz
Janos46 #2437 üzenetére
Ha az első if teljesülése esetén nem akarod, hogy a második if-be bemenjen, akkor if helyett elif-et kellene használni. Ugyanez igaz a harmadik if-re is.
Te magad is azt írod, hogy "pitagorasz segítségével meg lehet határozni a két leeső gömbszelet magasságát". Viszont akkor a gömbréteg magassága (vastagsága) az a nagyobbik és a kisebbik gömbszelet magasságának a különbsége. Ezért írtam, hogy szerintem rossz a képlet, ami alapján az M-et számolod, hiszen összeadod a két gömbszelet magasságát (majd ezt levonod az r-ből) ahelyett, hogy kivonnád őket.
"Ha a gömböt két párhuzamos síkkal metsszük, akkor a gömbtestet két gömbszeletre és egy gömbrétegre vágjuk fel."
Ez alapján az az eset is gömbrétegnek tekintendő, ahol a két metszősík a gömb középpontjának átellenes oldalán van (azaz a gömb aljából és tetejéből vágunk le egy kicsit). Ezért valószínűleg kell egy esetszétválasztást csinálnod arra a két esetre, amikor a két metszősík a gömb középpontjának ugyanazon vagy ellentétes oldalán van. A gömbréteg magasságát például az egyik esetben úgy kapod, ha a levágott gömbszeletek magasságát kivonod egymásból, a másik esetben meg a gömb átmérőjéből kell kivonni a gömbszeletek magasságának összegét.
-
-
cousin333
addikt
válasz
Janos46 #2416 üzenetére
Másik lehetőség:
with open("valami.txt", "a") as ofile:
ofile.write(f"Eredmény: {x} darab\n")
ofile.write(f"Ez is az: {y} liter\n")
Ennek az az előnye, hogy a fájl a with "tömbön" belül van nyitva, és a végén automatikusan bezárásra kerül, akkor is, ha közben a kód valami kivételt dob.
-
cousin333
addikt
válasz
Janos46 #2405 üzenetére
Nem biztos, hogy jól értem a kérdést, de elvileg a kód "közepét" kell átírnod:
if h > 0 and m > 0:
print ("\nHiba! Csak magasság vagy palást kell!")
Utána meg if-ek helyett elif-eket használj.
Amúgy meg ilyen esetekben nem dobnék hibát, hanem egyszerűen csak a magassággal számolnék, és kiírnám, hogy a palást érték redundáns volt és nem lett figyelembe véve a számolás során.
Még távolabbról nézve meg egy csinos kis osztályt készítenék a csonka gúlából...
-
válasz
Janos46 #2403 üzenetére
o.O
mit kellene kiírnia? ez ugyan windoze, de ezt kell látnod *nix alatt is:
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. Minden jog fenntartva.
W:\>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> -
sztanozs
veterán
válasz
Janos46 #2357 üzenetére
Ó istenem - el van b*va ez a kódszerkesztő...
from tkinter import *
def osszead():
zvalue.set(xvalue.get() + yvalue.get())
ablak1 = Tk()
ablak1.title("Alapműveletek")
label1 = Label(ablak1, text="Ez csak tanulgatás!", width=25, fg="red").pack()
xvalue = IntVar()
mezo1 = Entry(ablak1, textvariable=xvalue).pack()
yvalue = IntVar()
mezo2 = Entry(ablak1, textvariable=yvalue).pack()
zvalue = IntVar()
mezo3 = Entry(ablak1, textvariable=zvalue).pack()
gomb1 = Button(ablak1, text='Összeadás +', command=osszead).pack()
gomb2 = Button(ablak1, text='Kilépés', command = ablak1.destroy).pack()
ablak1.mainloop()
-
sztanozs
veterán
válasz
Janos46 #2329 üzenetére
mert nem a honapot ellenőrzöd, hanem hogy mikor lesz több pénzed, mint
10000000
Helyesen:
def kiszamit():
# eval kifejezetten kerülendő, komoly biztonsági kockázat lehet
penz = int(mezo1.get())
honap = 0
while (honap < 12):
# értékadásnál a rövid furmula átláthatóbb
penz *= 1.02
honap += 1
mezo2.delete(0,END)
# fornat string használata ajánlott inkább
#mezo2.insert(0,str(honap)+' honap mulva felvehetsz: '+str(round(penz,2))+' Ft-ot')
mezo2.insert(0,'{0} hónap múlva felvehetsz: {1:0.2f} Ft-ot'.format(honap, penz)) -
sztanozs
veterán
válasz
Janos46 #2188 üzenetére
root_cube = lambda x: x**(1./3.) if 0<=x else -(-x)**(1./3.)
használata:kobgyok27 = root_cube(27)
Sajna mivel törtszámokkal dolgozik, ezért nem szükségszerűen pontos.
Nagy számokra esetleg ez alapján: [link]
from sympy import S, Rational
def root_cube(number):
# change the number into a sympy object
num = S(number)
return (num**Rational(1,3)) -
kovisoft
őstag
válasz
Janos46 #2173 üzenetére
Elképzelhető, hogy félreértettél: nem azt írtam, hogy azt a while ciklust (vagy annak belsejét) tedd be a programodba, csak szemléltetni akaratam, hogy miért gondoltam úgy, hogy egy abl.update() hívással meg fog jelenni a Tk ablak. De ha jól látom a mostani hibaüzenetedből, az abl.update_idletasks() hívást tetted be. Vagy én értek félre valamit?
-
kovisoft
őstag
válasz
Janos46 #2164 üzenetére
Azért gondoltam, hogy az update() kell, mert magát a mainloop()-ot nem hívhatod, hiszen az teljesen elveszi a kontrolt a későbbi konzolos parancsaidtól. Viszont maga a mainloop() gyakorlatilag a lenti ciklust hajtja végre, amiből az update_idletasks() kezeli az eseményeket, az update() végzi a megjelenítést:
while True:
abl.update_idletasks()
abl.update() -
axioma
veterán
válasz
Janos46 #2159 üzenetére
Az a gond hogy rafut a gyokvonasra a hibas adatnal is. A szamolast a jo agon csinald csak meg (es a szovegben amikor a sugár kisebb mint a palást hossza az inkabb nagyobb akart lenni. Sot, ahogy irtad, >=, de azt ebben a sorrendben irjuk (a masik a kettos nyil, ha a python3 el is fogadja >= helyett, ne szokj ra, mert mashol meg masra hasznaljak).
print("\nHa a palástja adott.")
if r<a :
Am=r*pi*(a+r)
Vm=(r**2)*pi*(sqrt(a**2-r**2))/3
print (" Felülete: "+ str(Am), "\n Térfogata: " + str(Vm))
else:
print ("\nHibás, mert r >= a") -
kovisoft
őstag
válasz
Janos46 #2080 üzenetére
Az zavarhatott meg, hogy a print-nek lehet adni több paramétert, ezeket mind ki fogja írni egymástól elválasztva. A write-nak viszont ennél kötöttebb a formátuma, csak egy stringet tud kiírni, tehát amit a print-nél vesszőkkel elválasztva írattál ki, azokból (ahogy a többiek előttem már javasolták) össze kell állítani egy db stringet, és azt átadni a write-nak.
-
KEAN
tag
válasz
Janos46 #2080 üzenetére
Hi, hát mondjuk úgy, hogy eléggé összevissza paraméterezed azt a write függvényt.
https://docs.python.org/3.7/library/turtle.html#turtle.writej.write("Ez egy " + str(q) + " szám", align="center", font=("Arial", 20, "normal")) # Harmadik
-
cigam
titán
válasz
Janos46 #1977 üzenetére
+ ott a Pythonindomár ill az ott is ajánlott Hogyan gondolkozz úgy, mint egy informatikus: tanulás Python3 segítségével könyv.
A topik összefoglalóba össze kellene gyűjteni ezeket.
Új hozzászólás Aktív témák
Hirdetés
- GAMER PC : RYZEN 5 4500 / 16GB DDR4 / ASUS RX 480 8GB / WiFi / Bluetooth / 512GB M.2 SSD / 500GB HDD
- Dell Latitude 7390, 13,3" FHD IPS , I5-7300U CPU, 16GB DDR4, 512GB SSD, WIN 11, ( olvasd végig )
- Acer PREDATOR HELIOS NEO 16 / i9-14900HX / RTX 4070 (140W) / 1 TB SSD / 240HZ
- Topping A70 Pro fejhallgató erősítő
- Topping D70 Pro Octo DAC
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Bomba ár! HP ProBook 450 G7 - i5-10GEN I 16GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gar
- Lenovo Thinkpad L14 Gen 4 -14"FHD IPS - i5-1335U - 8GB - 256GB - Win11 - 2 év garancia - MAGYAR
- Apple Macbook Pro 14" (2024) - M4 - 16GB/512GB (mw2u3sl/a) Asztrofekete - Garancia - 18 Ciklus
- 118 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 9 7945HX, RTX 4070 - UK billentyűzet
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged