上節回顧
1.循環打印數列1,3,5,.........,99
for i in range(100):if i%2==1:print (i)
2.turtle 庫
# penup 抬筆
# pendown 落筆
# pensize 畫筆大小
# pencolor 畫筆顏色## 畫筆運動函數
# fd 前進
# bk 后退
# goto 到達指定的坐標點
# circle(r,angle)畫?# seth()/left()/right() ()內為畫筆轉動的角度## 顏色填充
# begin_fill() #開始填充
# fillcolor() #填充顏色
# end_fill() #結束填充
例子:
3.1基本數據類型
#數據:身高/體重/姓名/愛好#180/70/'nick'/容器類型
# 不同的數據類型可以描述不同類型的數據
3.2數字類型
##a. 整形
# 1. 表示:1/2/3/4/5/100
# 整形用來描述什么:如身高/數量/體重/id卡號/年齡
height1 = 180
height2 = int(180)
height3 = int('180')
##b. 浮點型
# 浮點型用來描述什么:Π,薪資,和錢有關的,
salary1 = 1.0
salary2 = float(1.0)
salary3 = float('1')
print(salary3)#1.0
# salary4 = float('2ss')#錯誤,2ss不對,轉換類型也要符合常理
## c.復數
# 表示:實部+虛部, a+bj, 1+2j
z = 1+2j
print(z) #(1+2j)
print(z.real) #1.0
print(z.imag) #2.0
3.3數字類型的計算
數字類型的運算
#1.一元操作符
# +-*/
x = 1
y = 2
print(x*y)
# % 取余
print(3%4)
# // 地板除,整除
print(3//4) #0
# ** 冪
print(2**10) #1024
print(pow(2,10)) #1024
#2. 二元操作符
x = 2
# x = x +2 # x+=2
x+=2
x*=2
x%=2
print(x)a = 2.0
b = 2.0
c = 2
print(a+c) #4.0,試想a=2.3的情況a = 0.1
b = 0.2
c = 0.3
print(a+b) #0.30000000000000004
print(round(a+b,2)) #0.4
print(a+b == 0.3) # False
print(a+c == 0.4) # True
3.4數據運算的通用方法
# 通用方法
print(abs(-1)) # 絕對值 1
print(divmod(10,3)) # 第一個商,第二個余數 (3, 1)
print(max(10,11,12,1123,12312312,111.0))#求最大值 12312312
print(min(10,11,12,1123,12312312,111.0))#求最小值 10
4.天天向上
# # 周一到周五進步0.01,然后雙休日退步0.01,這個怎么計算
#分析:
# # 1 8 15 22 周一 除7余1
# # 2 9 16 23 周二 除7余2
# # 3 10 17 24 周三 除7余3
# # ........
# # 周六 除7余6
# # 周日 除7余0
base = 1
factory = 0.01 # 更大 # 0.01001 # 0.01002 # 0.01003 # 0.01004 ... # 0.019
for i in range(365): # i=1周一if i % 7 == 6:base *= (1-0.01)elif i % 7 == 0:base *= (1 - 0.01)else:base *= (1 + factory)
print('base:',base) # 4.626500529730141# # 周一到周五進步0.01,然后雙休日退步0.01,周一到周五努力到什么程度才能和每天進步0.01結果一樣
factory = 0.01
for i in range(10000000):#循環,無限接近于每天進步0.01結果base =1for i in range(365):if i%7==6:base*=(1-0.01)elif i%7==0:base*=(1-0.01)else:base*=(1+factory)if base>pow(1.01,365):print(factory)breakfactory+=0.0001
5.1字符串類型
#字符串可用' ', " ",""" """,''' ''',這幾種行式的引號擴起來#單引號和雙引號括起來的相同的字符串輸出結果一樣
#三引號中的字符串可以換行
# poem = """鋤禾日當午,汗滴禾下土;
# 誰知盤中餐,粒粒皆辛苦。"""
# print(poem)
#輸出的結果應該為
鋤禾日當午,汗滴禾下土;
誰知盤中餐,粒粒皆辛苦。#如果字符串中需要單引號,則需要用雙引號包裹字符串
# print("nick's name is nick")
# print('''nick's name is "nick"''')
結果為:
#轉意
# print('nick"\'"s name is "nick"')
# # 本來'表示字符串結束了,但是加上\表示這個’只是一個很普通額字符# print('\tnick handsome') #\t表示4個空額,即縮進
# print('鋤禾日當午,汗滴禾下土;\n誰知盤中餐,粒粒皆辛苦') \n表示換行# print(r'\t\n') # 原生字符串
結果為:
# print('*'*50)
# for i in range(5):
# print('\r1',end='') # end控制輸出的形式 # \r原位打印
#print("\n")
# print('-'*50)
#結果為:
5.2字符串的運算
print('nick'+' handsome')
print('n'*50)
5.3普通方法
#s=str(18)
#print(s)
#print(len(s))
結果為:
18
2
5.4字符串的內置方法(字符串的內置方法)
#s='nick handsome height:180 weight:70'
#res=s.split(':')#切割,以指定的字符串切割大的字符串,這里是用:切割字符串s
#print(res)
#print(s.startswitch('nick'))#以指定的字符串開頭,這里是指字符串s是否以nick開頭
#print(s.endswitch(':70'))#以指定字符結尾
#print(s.center(60,'*'))
結果為:
f-string格式化
#s1='nick'
#s2='handsome'
#s3='height'
#s4=180
#print(s1+" "+s2+""+s3+""+str(s4))
#print(f'{s1} {s2} {s3} {s4}') #{}會占用變量名的值,并且數字會自動轉化成字符串
#print('{}{}{}{}'.format(s1,s2,s3,s4))
結果為:
其它
#s='nick'
#printf(f'{s:*<10}')#:表示后面的字符有意義,*表示填充的字符,^中間;<居左;>居右,10表示填充的字符長度
#height=180.01
#printf(f'{height:.3f}')
結果為:
文本進度條
import time
scale = 100
start = time.perf_counter()
for i in range(scale + 1):print(f'\r{((i/scale)*scale): ^3.1f}%[{"*"*i}->{"."*(scale-1-i)}] {time.perf_counter()-start:.2f}s', end='')time.sleep(0.1)
結果為: