Teszel a szöveg elé egy aposztrofot - akkor fixen szövegnek veszi a tartalmat.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Teszel a szöveg elé egy aposztrofot - akkor fixen szövegnek veszi a tartalmat.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Az egész datatable-t íratom ki, így ez sajnos lehetetlen.output.writerows(datatable)
Az egész datatable-t íratom ki
így ez sajnos lehetetlen.
Nem vélek a kettő között felfedezni ok-okozati összefüggést.
Mielőtt kiírod, tudsz rajta módosítani.
Same rules apply!
Neki kell allnom pythont tanulni, telepitettem a 3,62-ot, begyujtottem az elerheto magyar doksikat, de atolvasva oket remenytelennek latom a helyzetet, hogy hetfore irjak egy peldaprogramot, tul sok idot igenyel, hogy egyaltalan atlassam, mi mire jo.
Segitsegeteket kerem, hogyan tudok "modularisan" haladni?
Hetfore ket, egyszeruen hangzo rutint kell irnom, de nem tudom, hogyan kezdjek hozza.
Az elsonel harom halmazt kell definialni, pl. A1, A2 es A3, amikbe 0-9 kozotti egesz szamokat kell feltolteni.
Minimum3 es maximum 9 elem lehet minden tomb.
Ezutan ki kell listazni, hogy mely szamok szerepelnek mind a harom tombben.
A masik feladatnal husz elemet kell definialni, mindegyik egy betu legyen es meg kell adni, hogy melyiknek milyen szine van, 12 szinbol lehet legfeljebb 3 szint kivalasztani.
Majd ki kell irni, hogy szinenkent hany elem van, ami 0 es 20 kozotti szam lehet.
Vegul ki kell listazni ahhoz a legtobb, egyetlen szinhez tartozo elemeket.
Egy kis segitseget kernek az elindulashoz.
Milyen nyelven tudsz programozni?
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
1. feladat:
Létre kell hozni 3 üres listát.
Utána létre kell hozni egy while ciklust, amiből csak akkor lehet kilépni ha elérte a lista a 3. elemet és az input mezőben csak üres string van, (if,elif,else)
Itt érdemes a try és except metódusokat használni, hogy kiszűrd a nem megfelelő inputot
ha eléri a 9. elemet automatikusan kilép és átugrik a következő listára, egészen a végéig ( break)
Ha megvan mindhárom lista for és print metódussal tudod kilistázni
A listák elemeit a len metódus számolja meg.
Ha valamit kihagytam, a többiek majd kijavítanak.
[ Szerkesztve ]
Tudok ennél konkrétabban is segíteni, de ha utánanézel a parancsoknak és a működésüknek, szerintem menni fog.
A feladatokhoz:
mind a kettőhöz - hogy kell feltölteni az elemeket, mi határozza meg mennyi elem lesz?
(1) magyarán csak ki kell listázni három tömböt?
(2) ezekhez csak az alap tömb kezelési kulcsszavaknek kell utána nézni (és egy matekos kucsszó): list, dict, defaultdict, max
Ha van programozásio tapasztalatod, akoor a fentieknek elégnekk kell lennie mankónak..
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Koszonom, most el tudok indulni - mindjart kinyomtatom a szazegynehany oldalas leirast es vegigsetalok rajta a folyoson.
PS:
Gondolom, nehany tanar forog a sirjaban, hogy micsoda intelligens programnyelv az, aminek a ciklusabol break-kel kilepni...
[ Szerkesztve ]
majd minden intelligens nyelv ciklusából break-kel kell kilépni: wiki:break
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Én kérek elnézést.
Te a goto-t szereted ugye?
Vigyázat, csalok!
Nekem az lenne a problémám, hogy amikor csv-ből MYSQLdb-be íratok ki adatokat és autoincrementet használok primary ID-ként az 1000. sornál meg áll a történet, és nem tölti tovább
Ezt valaki tudja esetleg, hogy miért? Hiába állítok be INT-et, BIG INT-et, vagy bármit neki, 1000-ig szépen kilistázza, utána pedig meg áll (jelzem hiba üzenet nélkül).
A hozzá tartozó kódrészletem :
`ID` BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8"""
Meg is válaszolom a kérdésemet, hátha valaki hasonló problémába ütközne a közeljövőben!
A MYSQL Workbench-en belül, amikor megnyitjuk a táblát van egy fül : "toggle limitation of the records number" amit ha "Don't limit"-re állítunk láthatóvá válik minden
Önsegélyező egylet :p
Sziasztok!
A kovetkezo a problemam: epitettem egy "muszert", ami feszultseget mer, arduino alapon, es soroson elkuldi PC-re. Ez eddig ugye nem egy nagy truvaj... tettem ra optocsatolot, hogy galvanikusan le legyen valasztva. Hanem mostmar kifogytam a soros portbol, mert 8 ilyet akarok a gephez kotni. Tettem a panelocskamra egy RS485 drivert, meg az FTDI-hoz is toltam egy drivert, amin az adat iranyt a DTR szignallal kivantam allitani. A python kodom ugye kesz, ami eddig "patentul" ment, (kevesse igenyes, de mukodik, ir a kepernyore, ment file-ba, ilyenek, mondjuk kilepni nem lehet belole rendesen, de most ez mindegy is,) meg tudom kapcsolgatni a DTR-t, de sehogyan sem tudom szinkronba hozni a DTR kapcsolgatasat a kommunikcioval. Ott van a kutya elasva, hogy kapcsolom adasra a konvertert, tolom ki az adatokat, de azt nem tudom, mikor szalad ki az adat a soros porton.
Tudnatok ebben segiteni? Elore is koszi a segitseget!
Jut is eszembe... most W7-en nyomulok, de jo lenne, ha tudnam migralni RP-ra. (Raspbian)
Most Python 2.7-et hasznalok, mert a cegnel is az van, es igy egyszerubb nekem.
[ Szerkesztve ]
"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
Pont az ellenkezojet allitod, mint amit leirtam.
Nekem meg azt tanitottak, hogy ugy kell megirni a ciklust, hogy az vegigfusson.
Ha azt irod, hogy 1-x legyen a futasi tartomany, addig kell ismetelnie, amig x erteke el nem eri a beallitottat.
Kulonosen, hogy ott van az else ag is, igy azzal lehet kezelni a kiveteleket.
Sajnos nem ilyen egyszeru. Eloszor fel kell oket tolteni, majd kozos elemeket keresni bennuk, ami tobb tombben szerepel es azok szamat kell megadni, hany ilyen van, es vegul ki kell listazni oket sorrendben.
Ezert gondoltam, hogy inkabb halmazelmeleti feladat, de ha tombokkel kell megoldani, mas logikat kell talalnom hozza.
Mindenkihez:
Az elte oldalan levo python3-as leirast olvasom, de minden fejezetnel kiderul, hogy az 1.5 vagy 2.3 es hasonlo verziok alatt irodtak evekkel korabban.
Megnyugodhatok, hogy akkor azon a parancsok azota nem valtoztak, vagy job, ha megprobalok megbizhatobb forrast talalni?
megnyugodhatsz, elég sok minden változott. 1.5 óta meg pláne. ettől még nem kell kidobni a 2.7 tutorialt, ha konkrét problémád van, a python doksi elég részletes.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
Nekem meg azt tanitottak, hogy ugy kell megirni a ciklust, hogy az vegigfusson.
Szerintem ez egetverő baromság, de nem vagyok egy professzor, hogy az oktatási anyagon vitatkozzam.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Már egyetemen is sokszor volt az az érzésünk, hogy "aki tudja, az megél belőle, aki nem tudja, az meg tanítja."...
Same rules apply!
Tudnatok segiteni az alabbiak magyar megfelelojeben?
A Python forditoja szerint ezek magyarra lefordithatatlan szavak:
argument
handler (exeption-nel fordul elo)
List Comprehensions
prompt
right-hand side expression
sequence unpacking
shortcut operators
slice notation
string-literal
token
tuple
argument: --...
handler (exeption-nel fordul elo): except:
List Comprehensions: [x for x in ... if ...]
prompt: ~
right-hand side expression: ami jobb oldalt van
sequence unpacking: for x in ...
shortcut operators: && illetve ||
slice notation: X[y:z]
string-literal: "..."
tuple: (..., ..., ...)
Same rules apply!
Erre az RS485 problemara nincs otlet? Majd megprobalom akkor ez alapjan megegyszer: [link] Csak azt nem ertem, hogy miert nem megy az en hardware-emen.
[ Szerkesztve ]
"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
Koszonom, van,amit ertek.
argument: --...
Ez mit akar jelenteni? Morzejelek?
handler (exeption-nel fordul elo): except:
Ezt se ertem.:-(
List Comprehensions: [x for x in ... if ...]
Koszonom, ezt sejtem.
prompt: ~
annak a karakternek a neve?
right-hand side expression: ami jobb oldalt van
Vagyis a keplet vagy kifejezes jobb oldalon talalhato karakterhalmaz
sequence unpacking: for x in ...
Ezt mreg nem talaltam meg.
shortcut operators: && illetve ||
Tehat ezek is karakterek.
slice notation: X[y:z]
Ez nem ugrik be, X halmaz y-z kozti tartomanya?
string-literal: "..."
idezojelbe tett szoveg?
tuple: (..., ..., ...)
erre is csak tippelek: felsorolas? sorozat?
Trollkodtam alapvetően, ahhoz képest egész jó.
argument: argumentum, amit a paranccsorban átadunk. Pl. ilyen szokott lenni: --file joska.txt --force
prompt: parancssor.
sequence unpacking: egy szekvenciát tömörítesz ki, tehát egy változó segítségével végigiterálsz valamit, ami több elemet tartalmaz.
shortcut operators: rövidzárnak hívjuk magyarul. A logikai és (Pythonban: "and") és a logikai vagy (Pythonban: "or") úgy működnek, hogy ha az első kifejezés értékéből egyértelműen következik az eredmény, akkor nem értékeli ki a másikat. Itt írnak róla valamennyit.
slice notation: ez arra való, hogy egy kollekció X. és Y. elemei közötti részt tudod vele kiszedni. Pl. egy string 3.-tól 8. betűjéig tartó substringet.
string literal: egy szöveget tartalmazó konstans gyakorlatilag
tuple: több elemből álló kollekció, amely nem módosítható.
Same rules apply!
Sziasztok!
"shortcut operators: rövidzárnak hívjuk magyarul. A logikai és (Pythonban: "and") és a logikai vagy (Pythonban: "or") úgy működnek, hogy ha az első kifejezés értékéből egyértelműen következik az eredmény, akkor nem értékeli ki a másikat."
Szerintem, ez inkább a short-circuit "definíciója".
A shortcut (rövidítés) a +=, -=, /=, stb. akar lenni.
Például: sum = sum + 5 rövidíthető így: sum += 5
[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
Igen, koszonom.
Akkor meg erre is rakerdezek a biztonsag kedveert, hatha rosszul sejtem:
List Comprehensions: [x for x in ... if ...]
Igen, ez arra való, hogy a egy listából kiszedd a bizonyos elemeket.
L = [tök, makk, alma, birs, paprika]
Gy = [x for x in L if gyümölcs(x)]
Print Gy
[alma, birs]
[ Szerkesztve ]
Same rules apply!
A list comprehension-re találtam egy jónak tűnő fordítást: listaképző
Ez a funkció tulajdonképpen egy tipikus for ciklus alkalmazásnak a tömörebb megfogalmazására szolgál: amikor egy meglévő listán (pontosabban iterálható elemen) kell végigmenni, hogy elemről-elemre haladva az egyes elemeken végrehajtott műveletek segítségével egy új listát hozzunk létre.
Például ha minden elemhez hozzá akarunk adni 2-t, és ebből lesz az y.
x = [1, 2, 3, 4, 5]
y = []
for elem in x:
y.append(elem+2)
Ezt leegyszerűsíthetjük egy (két) sorra, így nincs a felesleges értékadás az elején és nem kell egyesével hozzáadogatni az új elemeket sem.
x = [1, 2, 3, 4, 5]
y = [elem + 2 for elem in x]
Ráadásul lehet megadni feltételt is, mindezt szintén egy sorban:
x = [1, 2, 3, 4, 5]
y = [elem+2 for elem in x if elem % 2 == 0]
Ennek a "hagyományos" megfelelője:
x = [1, 2, 3, 4, 5]
y = []
for elem in x:
if elem % 2 == 0:
y.append(elem+2)
Az első esetekben az eredményül kapott y hossza megegyezik az x-ével, az utóbbinál meg rövidebb, vagy egyenlő.
[ Szerkesztve ]
"We spared no expense"
aki már kínlódott ssh/scp/sftp és társaival:
a feladat egy gatewayen keresztül betalálni egy remote gépre (valami solaris dinoszaurusz), és onnan illetve oda fileokat elvinni/odatenni.
mivel paramikoval úgyis megcsináljuk a transportot, adná magát az sftp class, deviszont a remote gépen át kell sudozni egy másik (technikai) userre (nopasswordos, de akkor is), és utána lehet csak hozzáférni a szóbanforgó fileokhoz. sajnos a sudoval egyszerre nem lehet más parancsot kiadni (csak a keyloggert (rootsh) hajlandó indítani), ezért az exec_command
kiesett (kiadom a sudót, beveszi, de zárja is a transportot), ezért az invoke_shell
-el kínlódok. van jobb megoldás?
mert így a saját userrel felloggolok a remote gépre, de így csak ezt tudom használni, mert a technikai user jelszavát az üzemeltetés nem adja ki. viszont az paramiko sftp nem támogat sudózást.
nézem az scp modult, de sudót az sem szeret.
ötlet?
nem igazán akarok workaroundokat (direkt bejelentkezéses useren keresztül, cat-tel fileokat létrehozni, cvs repón keresztül szinkronizálni, stb.) hackelni, ha van egyenes út is.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
Szerintem erre a feladatra inkább való bash, mint python.
Same rules apply!
az a python és a solarison kívül még valami lenne, amihez nem értek, és három már kicsit sok nekem.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
Python helyett, úgy értettem.
Same rules apply!
Tudnátok abban segíteni, hogy szeretném telepíteni a djangot, de korábban telepítettem egy udemy-os kurzushoz egy másik pythont (anaconda, a jupyter notebookhoz kell) és most amikor a pip-el telepítem a djangot szerintem az anacondához telepíti, mert nem találom a python mappájában.
Van rá mód (az anaconda törlése nélkül), hogy ismét a megfelelő helyre települjenek a modulok?
Nézd meg, hogy a PATH környezeti változóban melyik python van előrébb, szerintem oda telepíti, ha nem a standard, akkor mozgasd előre és próbáld meg újratelepíteni a django-t. (Persze ezt most csak gyorsan tippeltem, nem 100%-hogy tényleg a PATH alapján találja, ki, hogy hová telepítsen.)
Illetve, szerintem kezd el használni a Virtual Environments nevű csodát. A mostani problémádat nem feltétlenül oldja meg, de a jövőben segít elkerülni őket. Link: [http://docs.python-guide.org/en/latest/dev/virtualenvs/]
( Elsőre én se értettem, hogy ez miért jó, ma meg már kis túlzással nem bírnék meglenni nélküle és baromi egyszerű a használata. )
[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
Ha a pip is egy ilyen virtualenv dolog, akkor már feltelepítettem. Természetesen az anacondához.
Egyénként nagyon köszönöm, ha jól látom megoldotta a problémát a környezeti változók babrálása.
Nagy pacsi!!!
Nem, a pip egy külön csomagkezelő modul, ami eleve része az Anaconda telepítésnek...
Igazából az a kérdés, hogy miért használsz 2 különböző környezetet. Ha pedig mégis kell, akkor az Anaconda támogatja ezek létrehozását. Ráadásul a csomagkezelője (conda) a Pythont is csomagként kezeli, ezért lehetőséged van arra is, hogy egyidejűleg használj egy 64-bites Python 3.6-t a legfrissebb csomagokkal az újabb munkáidhoz és mondjuk egy 32 bites 2.7-et adott verziójú csomagokkal a régebbi kódjaidhoz.
[ Szerkesztve ]
"We spared no expense"
Áh, nekem nincsenek "régebbi" munkáim.
Új gyerek vagyok. A pythont gondoltam beugrónak a programozás világába.
A Gerard Swinnen könyvből tanulok lassan egy éve. Elég cammogósan, mert amit nem értek, annak többször is nekifutok. Párhuzamosan meg megcsináltam egy udemy-os kurzust. (ehhez kellett az anaconda)
Most járok a webprogramozós résznél, de a könyv szerintem annyira nem naprakész ebben a témában, hogy inkább elkezdtem egy djangos kurzust.
Pycharm-ot használok és az meg úgy vettem észre, hogy nem az anacondát használja, hanem a sima pythont interpreternek.
Hogy jó alaposan tökönrúgjam magam elhatároztam, hogy belevágok egy golang kurzusba is.
Tegnap este elszöszöltem másfél órát, hogy megfelelő ide-t találjak a golanghoz.
Még mindig nem találtam.
Én is szeretnék egy kis segítséget kérni. Nekem is új a python, a php-t jobban ismerem.
Ez pontosan micropython, amit mikrokontrollerekhez fejlesztettek (alakítottak), de sok dologban egyezik a pythonnal. A problémám egy szimpla webserver:
import time
from machine import Pin
import usocket as socket
import network
sta_if = network.WLAN(network.STA_IF)
while not sta_if.isconnected():
print ('csatlakozás')
time.sleep(1)
ipadress = sta_if.ifconfig()
ipcim = tuple(ipadress)
print (ipcim[0])
html = """<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
button {
background-color: #555555;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
</style>
</head>
<BODY>
<form>
<input type="hidden" name="kapcsolas" value="szimpla">
<table width="100%">
<tr>
<td>LED RED</td>
<td><button name="relay" value="01-1" type="submit">BE</button></td>
<td><button name="relay" value="01-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="02-1" type="submit">BE</button></td>
<td><button name="relay" value="02-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="03-1" type="submit">BE</button></td>
<td><button name="relay" value="03-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="04-1" type="submit">BE</button></td>
<td><button name="relay" value="04-0" type="submit">KI</button></td>
</tr>
<table>
</form>
<form>
<input type="hidden" name="kapcsolas" value="1multi1">
<table width="100%">
<tr>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">MINDEN BE</button></td>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">LÁMPÁK BE</button></td>
</tr>
<tr>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">LÁMPÁK KI</button></td>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">MINDEN KI</button></td>
</tr>
<table>
</form>
</BODY>
</html>
"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
conn, addr = s.accept()
request = conn.recv(1024)
request = str(request)
kapcsolas = request[18:25]
print (request[32:36])
relay = request[32:36]
response = html
conn.sendall(response) #a probléma itt van!!!!
conn.close()
usocket modul leírása
A conn.sendall(response) parancs random elszáll egy szép hibakóddal: OSError: [Errno 104] ECONNRESET
Ha a sima conn.send(response) parancsot használom, akkor nem küldi el az összes adatot max. kb 1074Byte-ot.
Ez, ha jól értelmezem le is van írva, hogy a send parancs nem küldi el az összes adatot (“short write”).
Cselesen több részre tagoltam a html kódot és így próbáltam több send paranccsal küldeni, de így ugyanaz a
hibakód fogad véletlen számú lekérdezések után: OSError: [Errno 104] ECONNRESET
Írtam már a micropython fórumba is, de nem érkezett segítőkész válasz eddig.
Remélem Ti tudtok segíteni!
[ Szerkesztve ]
Mindig hibát dob, vagy csak néha-néha?
A sendall helyett a write-ot próbáltad már?
"We spared no expense"
Gondoltam, hogy nincs korábbi munka, azért furcsállottam, hogy két környezetet használsz (gondolom az egyik 2.7, a másik 3.x).
A PyCharm-ban a projekt beállításainál ki tudod választani az interpretert. De ha rám hallgatsz, törlöd a "normál" Pythont és meghagyod az Anacondát.
Már írtam párszor: a Gerard Swinnen könyv jó és magyar de elég régi. Ha megy az angol, inkább olyan könyvet keress.
"We spared no expense"
Köszi a választ!
A sendall kb. 5-10 lekérdezésig működik.
A write-ot is próbáltam, ugyanaz mint a sendall, az is elszáll 5-10 lekérdezés után.
A micropython fórumban sem jött még válasz. Szerintem csak 1074byte-ot tud küldeni stabilan.
Az unokahúgomnak szeretnék gyártani egy okoslámpát, neopixel rgb ledekből.
Ahhoz kevés lesz az 1074byte. Vagy több részre tagolom a html-t, funkciónként. (szín, animáció, mozgás érzékelés, beállítások, stb.) A python meg majd eldönti, hogy éppen mit küldjön a telójára. (ami belefér 1kB-ba )
[ Szerkesztve ]
Sziasztok!
Elkezdtem szépen lassan Pythont tanulni, és úgy voltam vele, hogy akkor neki is állok írni valami apróbb dolgot magamtól. Egy programocskát, ami kiírja 3 változó megadása után, hogy:
a, derékszögű háromszög vagy
b, háromszög vagy
c, nem háromszög
A három eshetőségből az a, működik, a b, és c, már nem. Hol rontottam el?if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
elif a<b+c == True and b<a+c == True and c<a+b == True:
print ("This is a triangle.")
else:
print ("This is NOT a triangle.")
Válaszotokat előre is köszönöm!
Még régebben írtam a topikba, amikor még konkrétan semmit se tudtam, akkor is segítettek, és útmutatást adtatok, azért is nagy köszönet!
– Yet, thou serves with thine eyes clouded in chaos. Thou, bound in the cage of madness. I am he who commands those chains – Fate/Zero Berserker Mad Enchantment
(#1196) Orionhilles válasza Orionhilles (#1195) üzenetére
if a<b+c == True and b<a+c == True and c<a+b == True:
if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
print ("This is a triangle.")
else:
print ("This is NOT even a triangle.")
Na ez már egymása ágyazott utasításokkal készült, mégse jó.
– Yet, thou serves with thine eyes clouded in chaos. Thou, bound in the cage of madness. I am he who commands those chains – Fate/Zero Berserker Mad Enchantment
Próbáld így:
if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
elif a<b+c and b<a+c and c<a+b:
print ("This is a triangle.")
else:
print ("This is NOT a triangle.")
Nem kell a "== True", csak zavar az éterben.
De a fő probléma az, hogy ha itt lemész az 5.15 (operator precedence) részhez:
Operator Description
lambda Lambda expression
if – else Conditional expression
or Boolean OR
and Boolean AND
not x Boolean NOT
in, not in, is, is not, <, <=, >, >=, <>, !=, == Comparisons, including membership tests and identity tests
| Bitwise OR
^ Bitwise XOR
& Bitwise AND
<<, >> Shifts
+, - Addition and subtraction
Akkor látszik, hogy a relációsjel precedenciája nagyobb az összeadásénál.
Tehát ez fog történni a kódodban:
(a<b)+c == True.
Namost ez egy oltári baromság, de nézzük, hogy mit csinál:
(a<b) -> True
True + c -> bool + int, a bool konvertálódik intté, tehát c+1 a végeredmény.
c+1 == True -> nem, az előző miatt C nagyobb, mint 1.
Same rules apply!
Merek ellentmondani.
A kód működik zárójelek nélkül is. A logikai vizsgálat nem igényli, mert a python megvizsgálja mi található a bal oldalon, aztán a jobb oldalon és úgy értékeli ki.
Köszönöm szépen a kimerítő választ!
cadtamas: Neked is köszi!
– Yet, thou serves with thine eyes clouded in chaos. Thou, bound in the cage of madness. I am he who commands those chains – Fate/Zero Berserker Mad Enchantment