1、字符串
2、r/R在字符串的最前面阻止轉義
3.獲取單個字符: 字符串[下標]
下標:0 ~ 長度-1 ; -1 ~ -長度
'abc'[0]
'abc'[3] # IndexError: string index out of range
4.獲取部分字符(切片): 字符串[起始下標:結束下標], 字符串[起始下標:結束下標:步長]
print('abc'[::-1])
5、+,* 的比較
+:連接
*:重復
‘>’,‘<’ 比較字符編碼大小
6、格式字符串
%s:字符串
%d:整數(shù)
%f:小數(shù)
%.nf:限制小數(shù)位數(shù)的小數(shù)
%c:字符
二、if語句
代碼是從上往下依次執(zhí)行的
import是導入一個模塊/包的關鍵字
random模塊中提供很多和隨機數(shù)相關的功能
import random
python中的分之結構只有if結構,沒有switch
1、if就是在程序用來做判斷的(需要在滿足某個條件的時候,才做什么事情的情況下就考慮用if)
randint(m,n) ---> 產生一個m到n的隨機數(shù)(整數(shù))
print(num,'是偶數(shù)')
2、if結構
a.語法:
if 條件語句:
執(zhí)行語句塊
b.說明
if -> 是python的關鍵字
條件語句 -> 要求最終有一個值,可以是一個字面量,也可以是一個變量...一般情況下要求結果是個布爾值
: -> 固定寫法
執(zhí)行語句塊 -> 可以是一行或者多行代碼。這個代碼中的代碼必須和前面中的if保持一個縮進
c.執(zhí)行過程: 先判斷條件語句的結果是否為True,為True就執(zhí)行冒號后面的執(zhí)行語句塊。否則就不執(zhí)行,直接執(zhí)行if結構后面的其他語句。
d.注意:在滿足條件后才執(zhí)行的代碼寫在if中,不管條件是否成立都要執(zhí)行的代碼就寫在if的外面。但是如果有if,if里面至少要有一條語句
print(num)
if num&1 == 0
print('是偶數(shù)')
練習:判斷一個字符串中隨機位置上的一個字符是否是字母,如果是就打印'該字符是字母',不管是不是字母都打印取出來的字符
str1 = '26hhj88(jk'
index = random.randint(0, len(str1)-1)
char = str1[index]
print(char)
判斷是否是字母
if 'a'<=char<='z' or 'A'<=char<'Z':
print('該字符是字母')
3、if-else結構
語法:
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結構
語法:
if條件語句1:
語句塊1
elif條件語句2:
語句塊2
else
語句塊3
執(zhí)行過程: 先判斷條件語句1是否成立,
如果成立直接性質語句塊1,然后整個if結構結束。
如果不成立,再判斷條件語句2是否成立。
如果條件語句2成立,就執(zhí)行語句塊2,然后整個if結構結束。
如果條件語句2不成立,執(zhí)行語句塊3
注意:if-elif-else結構中,elif可以根據情況有多個。else可以省略,如果有else,else寫在最后
練習:隨機產生0-100的年齡值,根據年齡的不同確定人處于哪個階段。
0-3歲 ---> 幼兒 4 - 12歲 ---> 兒童 13 - 18 --> 少年 19 --> 28 青年 29以上 ----> 老年
age = random.randint(0, 100)
print(age)
if age <= 3:
print('幼兒')
elif age 4 <= age <=12:
print('兒童')
elif age 13<= age <= 18:
print('少年')
elif age 19<= age <= 28:
print('青年')
else:
print('老年')
練習2:成績(grade)和操評(scrore)
成績大于4并且操評大于等于90 ---> 一等獎學金
績點在3.5到4,并且操評大于90 ----> 二等獎學金
績點在3到3.5,并操大于90 ----> 三等獎學金
其他情況沒有獎學金
grade = 4
scrore = 90
if grade >=4 and scrore >=90:
print('一等獎學金')
elif 4 >=grade >=3.5 and scrore >=90:
print('二等獎學金')
elif 3.5 >=grade >= 3 and scrore >= 90:
print('三等獎學金')
else:
print('沒有獎學金')
5.if嵌套
在分之結構中,我們可以if,elif或者else后面嵌套一個或者多個其他的if語句
練習:判斷一個數(shù)是否是偶數(shù),如果是打印'是偶數(shù)',并且判斷這個偶數(shù)能不能被4整除,如果能打印'是4的倍數(shù)'否則打印'不是4的倍數(shù)',如果是奇數(shù),打印奇數(shù)的最后一位 / 判斷最后一位是否是1
num = random.randint(0,100)
print(num)
if num & 1 == 0:
print('是偶數(shù)')
if num % 4 == 0:
print('是4的倍數(shù)')
else:
print('不是4的倍數(shù)')
else:
print('是奇數(shù)')
last = num % 10
print(last)
if last == 1:
print('最后一位是1')
print('!!')
三、for 循環(huán)
python中的循環(huán)結構有兩種:for循環(huán)和while循環(huán)
當某個操作/某段代碼需要重復的執(zhí)行的時候,就需要用到循環(huán)結構
1.for循環(huán)結構
語法:
for 變量 in 序列
循環(huán)體
說明:
for -> 關鍵字,寫法固定
變量 -> 變量名,按照變量名要求命名
in -> 關鍵字,寫法固定
序列 -> 要求是一個值,而且值必須一個序列(容器),比如:字符串、列表、字典、集合、元祖、迭代器、范圍(Range)
循環(huán)體 -> 和for保持一個縮進的代碼段。循環(huán)體會被重復執(zhí)行。循環(huán)體中可以寫任何代碼
執(zhí)行過程:讓變量去序列中取值,一個一個的取,取完為止。每取一個值,執(zhí)行一次循環(huán)體!
練習:獲取字符串'a78and71-2cd'中數(shù)字字符的個數(shù)
count = 0
for char in a78and71-2cd
if char.isdigit():
count += 1
print(count)
2、range函數(shù)
a.range(n): 產生一個0 ~ n-1范圍對應整數(shù)序列
print('===============')
for num in range(10):
print(num)
b.range(m,n): 產生一個m ~ n-1范圍對應的整數(shù)序列
print('===============')
for num in range(10, 21):
print(num)
c.range(m,n,step): 產生一個m ~ n-1中間隔step范圍對應的整數(shù)序列
print('==============')
for num in range(1,10,2):
print(num)
注意:python2.x --> xrange python3.x --->range
練習:計算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
..............
聲明一個變量保存和
sum1 = 0
for x in range(1,101):
sum1 += x
print(sum1)
3.注意:循環(huán)結構中變量取到的值不一定要在循環(huán)中使用。
如果這個變量的值在循環(huán)中不需要的時候,可以將變量名命名為_
練習: 打印5行*****
for _ in range(5):
print('*****')
四、while循環(huán)
1.while循環(huán)結構
語法:
while 條件語句:
循環(huán)體
說明:
while -> 關鍵字
條件語句 -> 和if后面的條件語句要求一樣,可以是任何有值的表達式(不能是賦值語句)
: -> 固定寫法
循環(huán)體 -> 重復執(zhí)行的代碼段。循環(huán)體要和while保持一個縮進
執(zhí)行過程:判斷條件語句的結果是否為True,為True執(zhí)行循環(huán)體。執(zhí)行完循環(huán)體,再判斷條件語句是否為True,為True又執(zhí)行循環(huán)體...依次類推,知道判斷條件語句的結果為False,循環(huán)就結束
注意: while True: ----> 死循環(huán)
用while循環(huán)實現(xiàn)1+2+3+...+100
num = 1
sum1 = 0
while num <= 100:
# print(num)
sum1 += num
num += 1
print(sum1)
練習2:求n! = 123...n
n = 10
num = 1
sum1 = 1
while num <= n:
sum1 *= num
num += 1
print(sum1)
練習3:用while循環(huán)獲取字符'hello python'中的每個字符
str1 = 'hello python'
index = 0
while index < len(str1):
print(str1[index])
index += 1
五、for和while
1.如果是不斷的獲取序列中的元素,直接使用for循環(huán)
2.如果循環(huán)次數(shù)確定,最好也使用for循環(huán)
3.死循環(huán)和循環(huán)次數(shù)不確定的時候最好使用while
練習:隨機產生一個數(shù)字(0~100),不斷的輸入數(shù)字,直到輸入的數(shù)字和產生的隨機數(shù)相同為止。
如果猜錯了提示大了或者小
number = random.randint(0, 100)
in_num = input('請輸入一個整數(shù):')
in_num = int(in_num)
while in_num != number:
if in_num > number:
print('太大了,再小點')
else:
print('太小了,再大點')
in_num = input('請輸入一個整數(shù):')
in_num = int(in_num)
print('恭喜你!猜對了:', number)
六、break,continue和else
1.continue
只能寫在循環(huán)體中,作用是,當遇到continue就結束當次循環(huán)直接進行下次循環(huán)的判斷
下次循環(huán)的判斷:for -> 讓變量取下一個值 while -> 判斷條件是否為True
for x in range(10):
print(x)
continue
print(x*2)
index = 1
while index < 10:
index += 1
continue
練習:計算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,整個循環(huán)直接結束。執(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)因為遇到break結束,else后邊的代碼塊就不會執(zhí)行
for x in range(1,10):
print(x)
if x == 3:
break
else:
print('結束了')
七、作業(yè)
1、
numbers = 1
for i in range (0,20)
numbers * = 2
print(numbers)
print(2**20) = 1048576
2、求1~100的之間所有數(shù)的和,平均值
sum1 = 0
for x in range(1,101):
sum1 += x
print(sum1) 結果:5050
print(sum1\100) 結果:50.50
3、求1~100之間能被3整除的數(shù)的和
sum1 = 0
for x in range(1,101):
if x%3 == 0:
sum1 += x
print(sum1) 結果為:1683
4、求1~100之間不能被7整除的數(shù)的和
sum1 = 0
for x in range(1,101):
if x%7:
sum1 += x
print(sum1) 結果為:4315
5、求斐波那契數(shù) 中第n個數(shù)的值:1,1,2,3,5,8,13,21,34....
n = 1
n_1 = 1 # 前一個
n_2 = 1 # 前兩個
current = 1 # 當前值
for x in range(3,n+1): # 算出后一位
current = n_1 + n_2 # 往后移
n_2 = n_1
n_1 = current
print(current)
6、判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。判斷素數(shù)的 法: 個數(shù)分別除2到sqrt(這個
數(shù)),如果能被整除,則表明此數(shù) 是素數(shù),反之是素數(shù)
for x in range(101,201):
count = 0
# y取 2 ~ x-1
for y in range(2, int(x**0.5)+1):
if x % y == 0:
count += 1
# print('%d不是素數(shù)' % (x))
break
if count == 0:
print('%d是素數(shù)' % (x))
7、打印出所有的 仙花數(shù),所謂 仙花數(shù)是指 個三位數(shù),其各位數(shù)字 和等于該數(shù)本身。 如:153是
個 仙花數(shù),因為153 = 1^3 + 5^3 + 3^3
for x in range(100,1000):
ge_wei = x%10
shi_wei = x//10%10
bai_wei = x//100
if x == ge_wei3 + shi_wei3 + bai_wei**3:
print('%d是水仙花數(shù)' % x)
8、有 分數(shù)序 :2/1,3/2,5/3,8/5,13/8,21/13...求出這個數(shù) 的第20個分數(shù)
分 :上 個分數(shù)的分 加分 分 : 上 個分數(shù)的分 fz = 2 fm = 1 fz+fm / fz
fz = 2
fm = 1
for _ in range(19):
# print('%d/%d'%(fz, fm))
fz,fm = fz+fm, fz # fz,fm = 3,2 , fz=3,fm=2
# t = fz
# fz = fz+fm # 2+1=3
# fm = t # 3
print('%d/%d'%(fz, fm))
9、給 個正整數(shù),要求:1、求它是 位數(shù) 2.逆序打印出各位數(shù)字
方法一:
num = 16723 # 1672 167 16 1 0
num2 = num
count = 0
while num != 0:
count += 1
print(num%10)
num //= 10
print(count)
方法二:
num = 16723
num_str = str(num)
print(len(num_str), num_str[::-1])