Bydd y daflen lab cyntaf yma yn eich cyflwyno i raglenni. Mae disgwyl i chi gweithio trwy'r holl diwtorial a hefyd yr enghraifft weithredol. Mae ymarferion eraill sy'n anelu at wthio'ch dealltwriaeth ymhellach. Yn olaf ar ddiwedd y daflen mae linciau i adnoddau a thiwtorialau eraill efallai bydd yn help neu o ddiddordeb.
Mae fideos trwy gydol y taflenni yn disgrifio'r cysyniadau yn ogystal â dangos demos.
Mae Python yn iaith rhaglenni. Mae yna nifer o ieithoedd rhaglenni gwahanol:
Mae iaith rhaglenni yn galluogi ni i ysgrifennu rhaglen sy'n ddilyniant o gyfarwyddiadau sy'n nodi sut mae perfformio cyfrifiad.
Wrth ysgrifennu rhaglen mae angen dau beth:
Byddwn ni'n defnyddio cyfuniad o'r ddau beth yma o'r enw notebook.
Mae nifer o ddosbarthiadau o Python, byddwn ni'n defnyddio Anaconda sy'n dod wedi'i becynnu gydag amryw o offerynnau defnyddiol (gan gynnwys y notebooks soniais amdanynt uchod).
I'w osod ar eich peiriant personol dilynwch y camau yma:
Byddwn yn defnyddio notebooks Jupyter sy'n rhedeg tu fewn i'r porthwr we. I agor gweinydd lleol ffeindiwch y porthwr Continuum a chliciwch ar Jupyter. Does dim angen cael cysylltiad i'r we er mwyn defnyddio hwn.
Mae'r fideo yma yn dangos demo o ddefnyddio notebook.
Bydd y taflenni lab yma yn cynnwys pytiau cod. Maent yn dangos y cod dylech chi ysgrifennu ond hefyd yr allbwn disgwyliedig. Rhowch gynnig ar y canlynol:
In [1]:
print("Helo byd")
Gweithiwch trwy'r canlynol:
Fideo yn disgrifio'r cysyniad.
Un o'r blociau adeiladu unrhyw iaith rhaglenni yw newidynnau. Dyma sut rydym yn storio newidyn penodol gallwn ei ail-ddefnyddio:
In [2]:
oedran = 20
oedran
Out[2]:
Mae'n bosib cario allan nifer o weithrediadau rhifiadol ac u ail-aseinio gwerth y newidyn:
In [3]:
oedran = oedran + 1 # Ychwanegu 1 i'r oedran
oedran
Out[3]:
Mae gan Python llaw fer ar gyfer y cod uchod:
In [4]:
oedran += 1 # Ychwanegu 1 i'r oedran
oedran
Out[4]:
Gallwn wneud mwy na adio yn unig (arbrofwch gyda rhain oherwydd efallai bydd eu hangen nes ymlaen):
-
*
/
**
%
Gallwn wirio math ein newidynnau, mae hwn yn ddefnyddiol iawn wrth geisio deall gwallau ac/neu ymddygiad annisgwyl:
In [5]:
type(5) # Cyfanrif
Out[5]:
In [6]:
type(5.4) # 'float'
Out[6]:
Arbrofwch gyda thrin newidynnau rhifiadol.
Fideo yn disgrifio'r cysyniad.
Math arall o newidyn a defnyddiwn yw newidyn o gymeriadau. Mewn rhaglenni fe elwir y rhain yn 'strings'.
In [7]:
enwcyntaf = "Vince"
enwcyntaf
Out[7]:
In [8]:
type(enwcyntaf)
Out[8]:
Gallwn hefyd creu strings newydd o rhai eraill:
In [9]:
enwolaf = "Knight"
enwllawn = enwcyntaf + " " + enwolaf
enwllawn
Out[9]:
Arbrofwch trwy greu newidynnau string eich hun.
Fideo yn disgrifio'r cysyniad.
Gallwn ddefnyddio ieithoedd rhaglenni i wirio os yw datganiad yn wir neu beidio. Fe elwir newidyn sy'n gallu bod yn True
neu yn False
yn newidyn boolean. Dyma enghraifft:
In [10]:
a = 4
b = 8 / 2
a == b # Gwirio os yw a yn hafal i b
Out[10]:
In [11]:
a != b # Gwirio os NAD yw a yn hafal i b
Out[11]:
In [12]:
a >= b # Gwirio os yw a yn fwy na neu'n hafal i b
Out[12]:
In [13]:
a < b + 1 # Gwirio os yw a yn llai na b + 1
Out[13]:
Nodwch gallwch osod y datganiad ei hun i fod yn newidyn:
In [14]:
datganiad = a == b
datganiad
Out[14]:
In [15]:
type(datganiad)
Out[15]:
Gallwn ddefnyddio hwn i gwblhau gweithrediadau gwahanol yn dibynnu os yw boolean yn wir neu beidio.
In [16]:
n = 11
if n <= 5: # Arbrofwch trwy newid gwerth n
gwerth = 1
elif n % 2 == 0: # fel arall, os
gwerth = 2
else: # fel arall
gwerth = 3
gwerth
Out[16]:
Mae mewnoliadau yn bwysig: bydd popeth sydd wedi'u mewnoli ar ôl y datganiadau if
, elif
, else
yn rhedeg ar gyfer yr achos penodol yna.
Mae'r cod uchod yn cynhyrchu:
$$f(n)=\begin{cases} 1&\text{ os yw } n\leq 5\\ 2&\text{ os yw } n> 5\text{ ac } n \text{ yn eilrif }\\ 3&\text{ fel arall }\\ \end{cases}$$Arbrofwch trwy newid y ffwythiant $f$ a newid y cod.
Fideo yn disgrifio'r cysyniad.
Mae'n bosib defnyddio cod i ailadrodd gweithrediadau. Dyma lwp while
sy'n ailadrodd beth bynnag sydd wedi'i mewnoli oddi tanodd nes nad yw'r amod boolean yn wir ragor:
In [17]:
cyfrif = 0 # Newidyn i gyfri
cyfanswm = 0 # Byddwn yn symio'r deg rhif cyntaf
while cyfrif < 10: # Cadw ailadrodd nes i'r cyfrif nes i'r cyfrif >= 10
cyfrif += 1 # Adio 1 i'r cyfrif
cyfanswm += cyfrif # Adio'r cyfrif i'r cyfanswm
cyfanswm
Out[17]:
Arbrofwch trwy symio (neu efallai lluosi?) dros wahanol restrau o eitemau.
Fideo yn disgrifio'r cysyniad.
Dyma enghraifft fach fwy cymhleth sy'n cyfuno'r cysyniadau amryw uchod.
Gadewch i ni wirio (nid prawf yw hwn!) bod y datganiad canlynol yn wir:
$$ \sum_{i=0}^n i ^ 2 = \frac{n(n+1)(2n+1)}{6} $$Byddwn yn gwneud hwn trwy gyfrifo'r ochr chwith a'r ochr de:
In [18]:
n = 20
rhs = n * (n + 1) * (2 * n + 1) / 6
lhs = 0
i = 0
while i < n:
i += 1
lhs += i ** 2
lhs == rhs
Out[18]:
Gallwn roi'r holl beth mewn i lwp while
er mwyn ei wirio ar gyfer nifer mawr o werthoedd o n:
In [19]:
n_macs = 2000
n = 0
while n < n_macs:
n += 1
rhs = n * (n + 1) * (2 * n + 1) / 6
lhs = 0
i = 0
while i < n:
i += 1
lhs += i ** 2
if lhs != rhs:
print(False)
Ymarfer datbygio
Isod yw cod sy'n ceisio gwirio'r unfathiant canlynol ar gyfer holl gwerthoedd llai na 200.
$$ \sum_{i=0}^ni ^ 3 = \frac{\left(n ^ 2 + n\right)^{2}}{4} $$Mae o leiaf un gwall (hefyd elwir yn byg) yn y cod. Canfyddwch a chywirwch yr holl bygs.
n_macs = 2000
n = 0
while n > n_macs:
n += 2
rhs = ((n ** 2 + 2 * n) ** 2) / 4
lhs = 0
i = 0
while i < n:
i += 1
lhs += i ** 2
if lhs != rhs:
print(False)
In [20]:
n_macs = 2000
n = 0
#while n > n_macs: Mae'r anhafaledd yma yn wyneb i waered:
while n < n_macs:
#n += 2 Fe dylwn cynyddu gan 1
n += 1
#rhs = ((n ** 2 + 2 * n) ** 2) / 4 Dyma'r fformiwla anghywir
rhs = ((n ** 2 + n) ** 2) / 4
lhs = 0
i = 0
while i < n:
i += 1
#lhs += i ** 2 Cynyddu gan y gwerth cywir
lhs += i ** 3
if lhs != rhs:
print(False)
In [21]:
# Dyma'r ochr dde:
n = 20
rhs = n * (n + 1) / 2
rhs
Out[21]:
In [22]:
# Dyma'r ochr chwith:
lhs = 0
i = 0
while i < n:
i += 1
lhs += i # Dyma'r unig linell sy'n wahanol
lhs
Out[22]:
In [23]:
lhs == rhs
Out[23]:
In [24]:
n_macs = 2000
n = 0
while n < n_macs: # gwirio'r hafaliad ar gyfer n hyd at 2000
n += 1
rhs = n * (n + 1) / 2
lhs = 0
i = 0
while i < n:
i += 1
lhs += i
if lhs != rhs:
print(False) # Byddwn yn printio False os yw'r cod yn ffeindio gwall
In [25]:
terfan_uchaf = 1000
cyfanswm = 0
rhif = 0
while rhif < terfan_uchaf:
rhif += 1 # Cynyddu'r rhif
if rhif % 3 != 0: # Gwirio os yw'n rhanadwy gan 3
cyfanswm += rhif
cyfanswm
Out[25]:
In [26]:
terfan_uchad = 1000
cyfanswm = 0
rhif = 0
cyfrif = 0
while cyfrif < terfan_uchaf:
rhif += 1 # Cynyddu'r rhif
if rhif % 3 != 0: # Gwirio os yw'n rhanadwy gyda 3
cyfanswm += rhif
# Cadw tra ar faint o rhifau sydd gennym sy'n nad rhanadwy gyda 3.
cyfrif += 1
cyfanswm
Out[26]:
In [27]:
epsilon = 0.001
K = 92 # Mae hwn yn gosod y gwerth cyntaf i cymryf ail isradd ohono
X = K / 4.0 # Mae hwn yn dewis gwerth cychwynnol y dilyniant
while abs(X**2 - K) > epsilon: # abs yw'r gwerth absoliwt
X = (X + K / X) / 2
print(X)
In [28]:
# gwiriwn
round(X ** 2, 3)
Out[28]:
In [ ]: