一糖耸、循環(huán)與分支
代碼是從上往下依次執(zhí)行的
import是導(dǎo)入一個(gè)模塊/包的關(guān)鍵字
random模塊中提供很多和隨機(jī)數(shù)相關(guān)的功能
import random
python中的分之結(jié)構(gòu)只有if結(jié)構(gòu)稻轨,沒有switch
1.if就是在程序用來做判斷的(需要在滿足某個(gè)條件的時(shí)候,才做什么事情的情況下就考慮用if)
randint(m,n) ---> 產(chǎn)生一個(gè)m到n的隨機(jī)數(shù)(整數(shù))
import random
num = random.randint(0, 10) #取0~10, 11個(gè)數(shù)
print(num,'是偶數(shù)')
2.if結(jié)構(gòu):
a.語法:
if 條件語句:
執(zhí)行語句塊
b.說明
if -> 是python的關(guān)鍵字
條件語句 -> 要求最終有一個(gè)值,可以是一個(gè)字面量,也可以是一個(gè)變量...一般情況下要求結(jié)果是個(gè)布爾值
: -> 固定寫法
執(zhí)行語句塊 -> 可以是一行或者多行代碼。這個(gè)代碼中的代碼必須和前面中的if保持一個(gè)縮進(jìn)
c.執(zhí)行過程: 先判斷條件語句的結(jié)果是否為True廉丽,為True就執(zhí)行冒號(hào)后面的執(zhí)行語句塊。
否則就不執(zhí)行妻味,直接執(zhí)行if結(jié)構(gòu)后面的其他語句正压。
d.注意:在滿足條件后才執(zhí)行的代碼寫在if中,不管條件是否成立都要執(zhí)行的代碼就寫在if的外面责球。
但是如果有if焦履,if里面至少要有一條語句
print(num)
if num&1 == 0:
print('是偶數(shù)')
print('======')
練習(xí):判斷一個(gè)字符串中隨機(jī)位置上的一個(gè)字符是否是字母,如果是就打印'該字符是字母'雏逾,
不管是不是字母都打印取出來的字符
str1 = '26hhj88(jk'
index = random.randint(0, len(str1)-1)
char = str1[index]
print(char)
# 判斷是否是字母
if 'a'<=char<='z' or 'A'<=char<'Z':
print('該字符是字母')
if char.isalpha():
print('該字符是字母')
33.if-else結(jié)構(gòu)
語法:
if 條件語句:
語句塊1
else:
語句塊2
執(zhí)行過程: 先判斷條件語句是否為True,如果為True就執(zhí)行語句塊1嘉裤,否則執(zhí)行語句塊2
num = 11
if num%2 == 0:
print('是偶數(shù)')
else:
print('是奇數(shù)')
print('是數(shù)字')
4.if-elif-else結(jié)構(gòu)
語法:
if 條件語句1:
語句塊1
elif 條件語句2:
語句塊2
else:
語句塊3
執(zhí)行過程: 先判斷條件語句1是否成立,
如果成立直接性質(zhì)語句塊1栖博,然后整個(gè)if結(jié)構(gòu)結(jié)束屑宠。
如果不成立,再判斷條件語句2是否成立仇让。
如果條件語句2成立典奉,就執(zhí)行語句塊2,然后整個(gè)if結(jié)構(gòu)結(jié)束丧叽。
如果條件語句2不成立卫玖,執(zhí)行語句塊3
注意:if-elif-else結(jié)構(gòu)中,elif可以根據(jù)情況有多個(gè)踊淳。else可以省略,如果有else假瞬,else寫在最后
練習(xí):隨機(jī)產(chǎn)生0-100的年齡值,根據(jù)年齡的不同確定人處于哪個(gè)階段。笨触。。
0-3歲 ---> 幼兒 4 - 12歲 ---> 兒童 13 - 18 --> 少年 19 --> 28 青年 29以上 ----> 老年
age = random.randint(0, 100)
print(age)
if age<=3:
print('幼兒')
elif age<=12:
print('兒童')
elif age<=18:
print('少年')
elif age<=28:
print('青年')
else:
print('老年')
練習(xí)2:成績(grade)和操評(píng)(scrore)
成績大于4并且操評(píng)大于等于90 ---> 一等獎(jiǎng)學(xué)金
績點(diǎn)在3.5到4雹舀,并且操評(píng)大于90 ----> 二等獎(jiǎng)學(xué)金
績點(diǎn)在3到3.5芦劣,并操大于90 ----> 三等獎(jiǎng)學(xué)金
其他情況沒有獎(jiǎng)學(xué)金
grade = 4
scrore = 90
if grade>=4 and scrore >= 90:
print('一等獎(jiǎng)學(xué)金')
elif 4 > grade >= 3.5 and scrore >= 90:
print('二等獎(jiǎng)學(xué)金')
elif 3 <= grade < 3.5 and scrore >= 90:
print('三等獎(jiǎng)學(xué)金')
else:
print('沒有獎(jiǎng)學(xué)金')
5.if嵌套
在分之結(jié)構(gòu)中,我們可以if说榆,elif或者else后面嵌套一個(gè)或者多個(gè)其他的if語句
練習(xí):判斷一個(gè)數(shù)是否是偶數(shù)虚吟,如果是打印'是偶數(shù)',
并且判斷這個(gè)偶數(shù)能不能被4整除签财,如果能打印'是4的倍數(shù)'否則打印'不是4的倍數(shù)'
如果是奇數(shù)串慰,打印奇數(shù)的最后一位 / 判斷最后一位是否是1
print('===============')
num = random.randint(0,100)
print(num)
if num & 1 == 0:
print('是偶數(shù)')
# 判斷是偶數(shù)的時(shí)候,是否能夠被4整除
if num % 4 == 0:
print('是4的倍數(shù)')
else:
print('不是4的倍數(shù)')
else:
print('是奇數(shù)')
last = num % 10 # 取個(gè)位上的數(shù)
print(last)
# 判斷是奇數(shù)的時(shí)候最后一位是否是1
if last == 1:
print('最后一位是1')
print('!!')
二唱蒸、for循環(huán)
python中的循環(huán)結(jié)構(gòu)有兩種:for循環(huán)和while循環(huán)
當(dāng)某個(gè)操作/某段代碼需要重復(fù)的執(zhí)行的時(shí)候邦鲫,就需要用到循環(huán)結(jié)構(gòu)
1.for循環(huán)結(jié)構(gòu)
"""
語法:
for 變量 in 序列:
循環(huán)體
說明:
for -> 關(guān)鍵字,寫法固定
變量 -> 變量名,按照變量名要求命名
in -> 關(guān)鍵字神汹,寫法固定
序列 -> 要求是一個(gè)值庆捺,而且值必須一個(gè)序列(容器),比如:字符串、列表屁魏、字典滔以、集合、元祖氓拼、迭代器你画、范圍(Range)
循環(huán)體 -> 和for保持一個(gè)縮進(jìn)的代碼段。循環(huán)體會(huì)被重復(fù)執(zhí)行桃漾。循環(huán)體中可以寫任何代碼
執(zhí)行過程:讓變量去序列中取值坏匪,一個(gè)一個(gè)的取,取完為止呈队。每取一個(gè)值剥槐,執(zhí)行一次循環(huán)體!
x = a
x = b
x = c
a
b
c
for x in 'abc':
print(x)
print(x)
# 練習(xí):獲取字符串'a78and71-2cd'中數(shù)字字符的個(gè)數(shù)
print('===============')
# 聲明變量來保存數(shù)字字符的個(gè)數(shù)
count = 0
for char in 'a78and71-2cd':
# 判斷字符是否是數(shù)字
if char.isdigit():
# print(char)
count += 1 # count = count + 1
print(count)
2.range函數(shù)
a.range(n): 產(chǎn)生一個(gè)0 ~ n-1范圍對(duì)應(yīng)整數(shù)序列
print('===============')
for num in range(10):
print(num)
# b.range(m,n): 產(chǎn)生一個(gè)m ~ n-1范圍對(duì)應(yīng)的整數(shù)序列
print('===============')
for num in range(10, 21):
print(num)
# c.range(m,n,step): 產(chǎn)生一個(gè)m ~ n-1中間隔step范圍對(duì)應(yīng)的整數(shù)序列
print('==============')
for num in range(1,10,2):
print(num)
注意:python2.x --> xrange python3.x --->range 練習(xí):計(jì)算1+2+3+...+100
sum1 = 0
x = 1,2,3,4
x = 1 sum1 += 1 sum1 = sum1+1 = 0+1 = 1
x = 2 sum1 += 2 sum1 = sum1+2 = 1+2
x = 3 sum1 += 3 sum1 = sum1+3 = 1+2+3
x = 4 sum1 += 4 sum1 = sum1+4 = 1+2+3+4
聲明一個(gè)變量保存和
sum1 = 0
for x in range(1,101):
sum1 += x
print(sum1)
3.注意:循環(huán)結(jié)構(gòu)中變量取到的值不一定要在循環(huán)中使用宪摧。
如果這個(gè)變量的值在循環(huán)中不需要的時(shí)候粒竖,可以將變量名命名為_
練習(xí): 打印5行*****
for _ in range(5):
print('*****') #五行****
三、while循環(huán)
1.while循環(huán)結(jié)構(gòu)
python中沒有do-while
語法:
while 條件語句:
循環(huán)體
說明:
while -> 關(guān)鍵字
條件語句 -> 和if后面的條件語句要求一樣,可以是任何有值的表達(dá)式(不能是賦值語句)
: -> 固定寫法
循環(huán)體 -> 重復(fù)執(zhí)行的代碼段几于。循環(huán)體要和while保持一個(gè)縮進(jìn)
執(zhí)行過程:判斷條件語句的結(jié)果是否為True蕊苗,為True執(zhí)行循環(huán)體。
執(zhí)行完循環(huán)體沿彭,再判斷條件語句是否為True,為True又執(zhí)行循環(huán)體...
依次類推朽砰,知道判斷條件語句的結(jié)果為False,循環(huán)就結(jié)束
注意: while True: ----> 死循環(huán)
用while循環(huán)實(shí)現(xiàn)1+2+3+...+100
num = 1
sum1 = 0
while num <= 100:
# print(num)
sum1 += num
num += 1
print(sum1)
# 1 2 3 .... 100
# 練習(xí):求n! = 1*2*3*...*n
n = 10
num = 1
sum1 = 1
while num <= n:
sum1 *= num
num += 1
print(sum1)
# 練習(xí):用while循環(huán)獲取字符'hello python'中的每個(gè)字符
str1 = 'hello python'
index = 0
while index < len(str1):
print(str1[index])
index += 1
四、for循環(huán)與while循環(huán)
1.如果是不斷的獲取序列中的元素瞧柔,直接使用for循環(huán)
2.如果循環(huán)次數(shù)確定漆弄,最好也使用for循環(huán)
3.死循環(huán)和循環(huán)次數(shù)不確定的時(shí)候最好使用while
# 練習(xí):隨機(jī)產(chǎn)生一個(gè)數(shù)字(0~100),不斷的輸入數(shù)字造锅,直到輸入的數(shù)字和產(chǎn)生的隨機(jī)數(shù)相同為止撼唾。
# 如果猜錯(cuò)了提示大了或者小
import random
# 產(chǎn)生一個(gè)隨機(jī)數(shù)
number = random.randint(0, 100)
# 返回從鍵盤接收到的數(shù)據(jù)(輸入的時(shí)候以回車結(jié)束),返回的數(shù)據(jù)類型是字符串
in_num = input('請(qǐng)輸入一個(gè)整數(shù):')
in_num = int(in_num)
while in_num != number:
if in_num > number:
print('太大了,再小點(diǎn)')
else:
print('太小了哥蔚,再大點(diǎn)')
in_num = input('請(qǐng)輸入一個(gè)整數(shù):')
in_num = int(in_num)
print('恭喜你倒谷!猜對(duì)了:', number)
五、break和continue和else
1.continue
只能寫在循環(huán)體中糙箍,作用是渤愁,當(dāng)遇到continue就結(jié)束當(dāng)次循環(huán)直接進(jìn)行下次循環(huán)的判斷
下次循環(huán)的判斷:for -> 讓變量取下一個(gè)值 while -> 判斷條件是否為True
for x in range(10):
print(x)
continue
print(x*2)
index = 1
while index < 10:
index += 1
continue
print('====')
# 練習(xí):計(jì)算1~100中非奇數(shù)的和 (使用continue)
sum1 = 0
for x in range(1,101):
if x % 2 == 1:
continue
sum1 += x
2.break
只能寫在循環(huán)體中
只要在循環(huán)中遇到break,整個(gè)循環(huán)直接結(jié)束。執(zhí)行循環(huán)后面的其他語句
for x in range(1,10):
print(x)
break
print('=====')
print('#####')
3.else
for 變量 in 序列:
循環(huán)體
else:
代碼塊
while 條件語句:
循環(huán)體
else:
代碼塊
循環(huán)自然死亡后深夯,執(zhí)行else后面的代碼抖格。如果循環(huán)因?yàn)橛龅絙reak結(jié)束,else后邊的代碼塊就不會(huì)執(zhí)行
for x in range(1,10):
print(x)
if x == 3:
break
else:
print('結(jié)束了')