python:eg

## 请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:

ax2 + bx + c = 0

的两个解:

import math
def quadratic(a,b,c):
    delta=b*b-4*a*c
    if delta<0:
        y='无解'
    else:
        y=((-b+math.sqrt(delta))/(2*a),(-b-math.sqrt(delta))/(2*a))
    return y
print(quadratic(2,3,1))# => (-0.5, -1.0)
print(quadratic(1, 3, -4)) # => (1.0, -4.0)

#1到100求和

total=0
for i in range(1,101):
	total=total+i
print(total)

#输出100以内的所有质数

def judge(x):
	for i in range(2,x):
		if x%i==0:
			return False
	return True
for i in range(2,101):
	if judge(i):
		print (i)

## 给出一个人的身高,体重,通过BMI计算:BMI=体重除以身高的平方,来判断身体状况

height=float(input('please enter your height:'))
weight=float(input('please enter your weight:'))
BMI=float(weight/(height*height))
if BMI<18.5:
    print('过轻')
elif 18.5<BMI<25:
    print('正常')
elif 25<BMI<28:
    print('过重')
elif 28<BMI<32:
    print('肥胖')
elif BMI>32:
    print('严重肥胖')

#一个简单的数据库
#一个将人名用做键的字典。每个人都用一个字典表示
#字典包含'phone'和'addr',它们分别与电话号码和地址相关联

people={
	'Alice':{
		'phone':'2351',
		'addr':'Foo 23'
	},
	'Betn':{
		'phone':'4569',
		'addr':'Street 24'
	},
	'Cecil':{
		'phone':'7894',
		'addr':'Street 32'
	}
}

#电话号码和地址的描述性标签,供打印输出时使用
labels={
	'phone':'phone number',
	'addr':'address'
}
name=input('Name:')

#要查找电话号码还是地址?
request=input('Phone number(p) or address(a)?')

#使用正确的键:
key=request#如果request既不是'p'也不是'a'
if request=='p':key='phone'
if request=='a':key='addr'

#仅当名字是字典里包含的键时才打印信息:
if name in people:print("{}'s {} is {}.".format(name,labels[key],people[name][key]))

#使用get提供的默认值
person=people.get(name,{})
label=labels.get(key,key)
result=person.get(key,'not available')
print("{}'s {} is {}.".format(name ,label,result))

#sorted()函数
可以对list进行排序
假设我们用一组 tuple 表示学生名字 和 成绩:
L = [ ( ‘Bob,75’ ) , ( ‘Adam’,92 ) , ( ‘Bart’,66 ) , ( ‘Lisa’,88 ) ]
请用 sorted() 对上述列表分别按名字和成绩高到低排序

def by_name(t):
    return t[0].lower()
l=[('Dob',75),('Adam',92),('Bart',66),('Cisa',88)]
l1=sorted(l,key=by_name)
print(l1)
#成绩从高到低排序:
def by_score(t):
    return t[1]
l=[('Dob',75),('Adam',92),('Bart',66),('Cisa',88)]
l2=sorted(l,key=by_score,reverse=True)
print(l2)
print(sorted([36,5,12,6,-23],key=abs))

filter过滤函数,找出回数

def is_palindrome(n):
    s=str(n)
    for i in range(len(s)):
        if s[i]==s[len(s)-1-i]:
            return True
        else:
            return False
output=filter(is_palindrome,range(1,1000))
print(list(output)

#访问限制

class Student(object):
    def __init__(self,name,score):
        self.__name=name
        self.__score=score
    def get_name(self):
        return self.__name
    def get_score(self):
        return self.__score
    def set_score(self,score):
        if 0<=score<=100:
            self.__score=score
        else:
            raise ValueError('bad score')
    def get_grade(self):
        if self.__score>=90:
            return 'A'
        elif self.__score>=60:
            return 'B'
        else:
            return 'C'
bart=Student('Bart Simpson',59)
print('bart.get_name()=',bart.get_name())
bart.set_score(90)
print('bart.get_score()=',bart.get_score())
print('DO NOTuse bart.Student__name:',bart._Student__name)
结果为:
bart.get_name()= Bart Simpson
bart.get_score()= 90
DO NOTuse bart.Student__name: Bart Simpson

继承多态

class Animal(object):
    def run(self):
        print('Animal is running...')
class Dog(Animal):
    def run(self):
        print('Dog is running...')
class Cat(Animal):
    def run(self):
        print('Cat is running...')
def run_twice(animal):
    animal.run()
    animal.run()
a=Animal()
d=Dog()
c=Cat()
print('a is Animal?',isinstance(a,Animal))
print('a is Dog?',isinstance(a,Dog))
print('d is Cat',isinstance(d,Cat))
print('d is Dog?',isinstance(d,Dog))
print('c is Cat',isinstance(c,Cat))
run_twice(d)

#获取对象属性

class Myobject(object):
    def __init__(self):
        self.x=9
    def power(self):
        return self.x*self.x
obj=Myobject()
print('hasattr(obj,\'x\')=',hasattr(obj,'x'))#有属性'x'吗?
setattr(obj,'y',9)#设置一个属性‘y’
print('hasattr(obj,\'y\')=',hasattr(obj,'y'))#有属性'y'吗?
print('getattr(obj,\'y\')=',getattr(obj,'y'))#获取属性‘y’
print('obj.y=',obj.y)#获取属性‘y’
print('getattr(obj,\'z\')=',getattr(obj,'y',909))#获取属性'z'吗?,如果没有默认为909
f=getattr(obj,'power')#获取power属性
print(f)
print(f())

#@property

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError('score must be an integer!')
        if value < 0 or value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = value
s = Student()
s.score = 60
print('s.score =', s.score)
s.score=999
print('score must between 0~100')
结果为:
s.score = 60
Traceback (most recent call last):
  File "D:/python/13.py", line 19, in <module>
    s.score=999
  File "D:/python/13.py", line 12, in score
    raise ValueError('score must between 0 ~ 100!')
ValueError: score must between 0 ~ 100!

#使用__slots__

class Student(object):
	__slots__=('name','age')
class GraduateStudent(Student):
	pass
s=Student()
s.name='ssd'
s.age=29
try:
	s.score=90
except AttributeError as e:
	print('AttributeError:',e)
g=GraduateStudent()
g.score=90
print('g.score=',g.score)
结果为:
AttributeError: 'Student' object has no attribute 'score'
g.score= 90

#使用@property

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError('score must be an integer!')
        if value < 0 or value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = value

s = Student()
s.score = 60
print('s.score =', s.score)
# ValueError: score must between 0 ~ 100!
s.score = 9999
结果为:
s.score = 60
Traceback (most recent call last):
  File "D:/python/13.py", line 19, in <module>
    s.score = 9999
  File "D:/python/13.py", line 12, in score
    raise ValueError('score must between 0 ~ 100!')
ValueError: score must between 0 ~ 100!

使用枚举类

from enum import Enum,unique
@unique
class Weekday(Enum):
    Sun=0
    Mon=1
    Tue=2
    Wed=3
    Thu=4
    Fru=5
    Sat=6
day1=Weekday.Mon
print('day1=',day1)
print('Weekday.Tue=',Weekday.Tue)
print('Weekday[\'Tue\']=',Weekday['Tue'])
print('Weekday.Tue.value=',Weekday.Tue.value)
print('day1==Weekday.Mon ?',day1==Weekday.Mon)
print('day1==Weekday.Tue ?',day1==Weekday.Tue)
print('day1==Weekday(1) ?',day1==Weekday(1))
for name,member in Weekday.__members__.items():
    print(name,'=>',member)
Month=Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
for name,member in Month.__members__.items():
    print(name,'=>',member,',',member.value)
结果为:
day1= Weekday.Mon
Weekday.Tue= Weekday.Tue
Weekday['Tue']= Weekday.Tue
Weekday.Tue.value= 2
day1==Weekday.Mon ? True
day1==Weekday.Tue ? False
day1==Weekday(1) ? True
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fru => Weekday.Fru
Sat => Weekday.Sat
Jan => Month.Jan , 1
Feb => Month.Feb , 2
Mar => Month.Mar , 3
Apr => Month.Apr , 4
May => Month.May , 5
Jun => Month.Jun , 6
Jul => Month.Jul , 7
Aug => Month.Aug , 8
Sep => Month.Sep , 9
Oct => Month.Oct , 10
Nov => Month.Nov , 11
Dec => Month.Dec , 12

datetime

>>> from datetime import datetime,timedelta,timezone
>>> now=datetime.now()#获取当前datetime
>>> print('now=',now)
now= 2019-04-13 12:13:36.100478
>>> print('type(now)=',type(now))
type(now)= <class 'datetime.datetime'>
>>> dt=datetime(2019,4,13,12,20)#用指定时间日期创建datetime
>>> print('dt=',dt)
dt= 2019-04-13 12:20:00
>>> print('datetime->timestamp:',dt.timestamp())#把datetime转换为timestamp
datetime->timestamp: 1555129200.0
>>> t=dt.timestamp()#把timestamp转换为datetime
>>> print('timestamp->datetime:',datetime.fromtimestamp(t))
timestamp->datetime: 2019-04-13 12:20:00
>>> print('timestamp->datetime as UTC+0:',datetime.utcfromtimestamp(t))
timestamp->datetime as UTC+0: 2019-04-13 04:20:00
>>> cday=datetime.strptime('2019-6-2 18:59:39','%Y-%m-%d %H:%M:%S')#从str读取datetime
>>> print('strptime:',cday)
strptime: 2019-06-02 18:59:39
>>> print('strftime:',cday.strftime('%a,%b %d %H:%M'))#把datetime格式化输出
strftime: Sun,Jun 02 18:59
>>> print('current datetime=',cday)
current datetime= 2019-06-02 18:59:39
>>> print('current+10 huors=',cday+timedelta(hours=10))#对日期进行加减
current+10 huors= 2019-06-03 04:59:39
>>> print('current-1day=',cday-timedelta(days=1))
current-1day= 2019-06-01 18:59:39
>>> print('current+2.5days=',cday+timedelta(days=2.5))
current+2.5days= 2019-06-05 06:59:39
>>> utc_dt=datetime.utcnow().replace(tzinfo=timezone.utc)#把时间从utc+0时区转换为utc+8
>>> utc8_dt=utc_dt.astimezone(timezone(timedelta(hours=8)))
>>> print('UTC+0:00 now=',utc_dt)
UTC+0:00 now= 2019-04-13 11:05:09.697464+00:00
>>> print('UTC9_dt now=',utc8_dt)
UTC9_dt now= 2019-04-13 19:05:09.697464+08:00

统计字母出现的次数

from collections import Counter
c=Counter()
for ch in 'programming':
	c[ch]=c[ch]+1
print(c)
结果为:
Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})	
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值