昨天由于刚好接手了一些任务,没有腾出时间来练习,今天把之前的Python练习补上,明天开始再顺便复习一下之前学习的C/C++
##review列表
a=list(range(1,10,2))
print(a[-3])
a[-2]='r'
print(a)
a.insert(4,'I love you')
print(a)
a.pop()
print(a)
a.pop()
print(a)
a.remove(3)
print(a)
a.reverse()
print(a)
b=a.copy()
print(b)
c=1 not in a##bool
print(c)
##切片:截取一个部分,得到一个新序列;
##开始位置,右开区间,步长
a=[1,2,3,4,7,9,11,13]
a=a[::]
print(a)
a=a[::2]
print(a)
a=a[:4:]
print(a)
from copy import *
a=[1,3,1,4,['i','love']]
c=copy(a)
d=deepcopy(a)
a[4].append('you')
print(c)
print(d)
from random import *
a=list(range(10))
print(a)
shuffle(a)##随机排序
print(a)
a.sort(reverse=True)
print(a)
a=[5,2,0,9,9]
a.sort()
print(a)
a=sorted(a,reverse=True)
print(a)
b=sorted(a)
print(b)
str='iloveyou'##只有字符串必须使用等式进行sort
str=sorted(str)
print(str)
以下是元组练习:
##元组
a=(96,97,98,99)
print(a)
a=tuple([96,94,93,91])
print(a)
del a
b=(2,4,5)
print(b)
##列表可变,元组不可变
##tuple可以冻结列表,list可以融化元组
##元组的访问和处理速度比列表快
##元组可用作字典的键,但列表不可以
x=([97,98],99)
x[0][0]=96
print(x)
x[0].append(95)
print(x)
以下是封装函数部分:
def money(n):
s=0
for i in range(1,n+1):
s+=2**i
return s
print(money(30)//10000+1)
def demo(*p):
print(p)
demo(5,2,0)
def demo(**p):
for item in p.items():
print(item)
demo(a=5,b=2,c=0)
##一个*解包,两个*解字典
##lambda函数
f=lambda x,y,z:x+y+z
print(f(1,2,3))
a=[1,3,1,4]
b=list(map((lambda x:x*100),a))
print(b)
a={'i':99,'love':98,'you':97}
b=sorted(a)
print(b)
c=sorted(a.values())
print(c)
d=sorted(a.items(),key=lambda x:x[1])
print(d)
def tupleCout(s):
result=[0,0]
for ch in s:
if ch.islower(): result[1]+=1
elif ch.isupper(): result[0]+=1
return tuple(result)
s="After all,Tomorrow is another day!"
print(tupleCout(s))
创造一个猜数函数:
from random import randint
def guess(maxValue=100,maxTimes=7):
value=randint(1,maxValue)
for i in range(maxTimes):
prompt='Start to guess:'if i==0 else 'Guess again:'
try:x=int(input(prompt))
except:print('Must input an integer')
else:
if x==value: print('Congratulations!'); break
elif x>value: print('TOO BIG')
else: print("TOO LITTLE")
else:
print('Game Over.')
print('The value is ',value)
print(guess())
博主目前的编程能力的确有限,希望能在最短的时间之内快速提升吧
刚接触编程四个月,直接上三门语言感觉还是有些吃不消,最困难的情况就是能想出来思路却不知道如何用代码来实现,感觉数学语言和编程语言还是有不少不同的,毕竟机器语言对我来说太新鲜了。。。
利用MonteKaro方法进行圆周率的近似求解,用到的方法类似于蒲丰投针:
from random import random
def estimate(times):
hits=0
for i in range(times):
x=random()*2-1
y=random()*2-1
if x*x+y*y<=1:
hits+=1
return 4.0*hits/times
print(estimate(100000))
print(estimate(10000000))
最后一个部分,字符串,感觉python的基础语法还是蛮多的。。。
##字符串
print("%c"%65)
print("%s"%65)
print("%.4f"%3.14159)
str='09876543'
print(str[::-1])
print(str[-3:-1])
print(str[-3:])
s='lemon,lichee,peach'
print(s.find('peach',7,17))
print(s.index('e'))
print(s.count('e'))
s='2022-12-26'
print(list(map(int,s.split('-'))))
s='hello world'
print(s.split())
print(s.split(None,4))
print('I am genius'.lower())
print('ahhhahahahha'.upper())
print('what is your name?'.capitalize())
print('my name is David'.swapcase())
print('abc'.strip('a'))
import math
print(eval('3+4'))
print('a' in 'adcfvghbjk')
明天可以正式开始ALG的开心学习啦!!!