Ú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"Meddigvá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.
>>> -
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() -
-
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)) -
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
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- 153 - Lenovo LOQ (15IRX9) - Intel Core i5-13450HX, RTX 4060 (ELKELT)
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- Apple MacBook Pro 16 (2021) M1 Max 32GB RAM 500GB SSD használt, megkímélt 100% akku (0 ciklus)
- HP ProDesk 600 G5 i5-9500 8GB 256GB 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

