python : github项目


f=float(input('please input a number:'))
c=(f-32)/1.8
print('%.1f=%.1f'% (f,c))
======================================================

import math
rad=int(input('please input the r:')) #input传递的数要进行类型强转,否则报错
c=2*math.pi*rad
s=math.pi*(rad**2)
print('the c=%.1f,the s=%.1f'% (c,s))
========================================================
year=int(input('please enter the year:'))
is_leap=(year % 4==0 and year % 100!=0 or year % 400==0)
print(is_leap)    #return True/False
========================================================
letters='aBcdEfh'
print('the length of the letters is : %d' % len(letters))   # 同下
print('uppercae the title letter: %s '% letters.title())    # 等价于 print('change the first letter:',letters.title())
print('uppercase the string:',letters.upper())
print('判断字符串是否以A开头:',letters.startswith('A'))    #startswith :即starts with 
print('判断字符串是否以!结尾:',letters.endswith('!'))

输出:
the length of the letters is : 7
uppercae the title letter: Abcdefh 
uppercase the string: ABCDEFH
判断字符串是否以A开头: False
判断字符串是否以!结尾: False
========================================================
#python的主要变量类型
a = 100
b = 1000000000000000000
c = 12.345
d = 1 + 5j
e = 'A'
f = 'hello, world'
g = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
print(type(f))
print(type(g))

输出:
<class 'int'>
<class 'int'>
<class 'float'>
<class 'complex'>
<class 'str'>
<class 'str'>
<class 'bool'>
========================================================
a=float(input('please enter a number:'))
b=input('单位:')
if b=='cm' or b=='厘米':
    print('%f = %f'% (a,a/2.54))
elif b=='in' or b=='英寸':
    print('%f = %f'% (a,a*2.54))
else:
    print('请输入有效单位\n')
========================================================
score=int(input('please enter the grade:'))
if score >=90:
    print('A')
elif score>=80:  #因为执行到其中一个分支就会退出选择结构,所以不用写成类似 score>=80 and score<=90 这种结构
    print('B')
elif score>=70:
    print('C')
else:
    print('you r trash')
========================================================
#求三角形面积
import math as ma
a,b,c=3,4,5
p=(a+b+c)/2
s=ma.sqrt(p * (p - a) * (p - b) * (p - c)) #海伦公式, 根号下 XXXXX
print(s)

等价于:

from math import sqrt
a,b,c=3,4,5
p=(a+b+c)/2
s=sqrt(p * (p - a) * (p - b) * (p - c)) #海伦公式, 根号下 XXXXX
print(s)
=========================================================
#0到100偶数求和
sums=0
for a in range(101):   # 即0-100,等价于for a in range(2, 101, 2):
    if a%2==0:
        sums+=a
    else:
        continue
print(sums)

等价于:

sums,num=0,0
while num<=100:
    sums+=num
    num+=2
print(sums)
==========================================================
for a in range(3):
    print(a)

输出:
0
1
2
===========================================================
for b in range(1,3):
    print(b)
输出:
1
2
===========================================================
#输出斐波那契数列的前20个数
#1 1 2 3 5 8 13 21 ...

a = 0
b = 1
for _ in range(20):
    a, b = b, a + b
    print(a, end=' ')
===========================================================
#水仙花数的查找
for a in range(100,1001):
    x=a%10       #个位
    y=a//10%10   #十位
    z=a//100     #百位
    if x**3 + y**3 +z**3 == a:
        print(a)
===========================================================

#通过函数的封装,计算组合数C(m,n)  (m>n)
def factorial(n):
    result=1
    for a in range(1,n+1):
        result*=a
    return result
m=int(input('enter the m:'))
n=int(input('enter the n:'))
print(factorial(m)/factorial(n)/factorial(m-n))
==================================================
#求最大公约数与最小公倍数

def dy(x,y):
    if x<y:
        x,y=y,x
    for a in range(y,1,-1): #求最大公约数,故倒着来
        if x%a==0 and y%a==0:
            return a

def xb(x,y):
    return(x*y/dy(x,y))  #求最小公倍数的公式

print(dy(9,12))
print(xb(9,12))
====================================================

Python的内置函数
- 数学相关: abs / divmod / pow / round / min / max / sum
- 序列相关: len / range / next / filter / map / sorted / slice / reversed
- 类型转换: chr / ord / str / bool / int / float / complex / bin / oct / hex
- 数据结构: dict / list / set / tuple
- 其他函数: all / any / id / input / open / print / type


fruits = ['orange', 'peach', 'durian', 'watermelon']
print(fruits[slice(1,3)]) #输出第1,2个元素'peach', 'durian'
==========================================================================

Python常用模块
- 运行时服务相关模块: copy / pickle / sys / ...
- 数学相关模块: decimal / math / random / ...
- 字符串处理模块: codecs / re / ...
- 文件处理相关模块: shutil / gzip / ...
- 操作系统服务相关模块: datetime / os / time / logging / io / ...
- 进程和线程相关模块: multiprocessing / threading / queue
- 网络应用相关模块: ftplib / http / smtplib / urllib / ...
- Web编程相关模块: cgi / webbrowser
- 数据处理和编码模块: base64 / csv / html.parser / json / xml / ...
===========================================================================


"""
函数的参数
- 位置参数
- 可变参数
- 关键字参数
- 命名关键字参数

"""

# 参数默认值
def f1(a, b=5, c=10):
    return a + b * 2 + c * 3


print(f1(1, 2, 3))         # 1+2*2+3*3=14
print(f1(100, 200))        # 100+200*2+10*3=530
print(f1(100))             # 100+2*5+3*10=140
print(f1(c=2, b=3, a=1))   # 1+3*2+2*3=13 (如果不加a,b,c进行限定,则计算方法与第一个类似)


# 可变参数
def f2(*args):
    sum = 0
    for num in args:
        sum += num
    return sum


print(f2(1, 2, 3))         #6
print(f2(1, 2, 3, 4, 5))   #15
print(f2())                #0


# 关键字参数
def f3(**kw):
    if 'name' in kw:
        print('欢迎你%s!' % kw['name'])
    elif 'tel' in kw:
        print('你的联系电话是: %s!' % kw['tel'])
    else:
        print('没找到你的个人信息!')


param = {'name': '骆昊', 'age': 38}
f3(**param)
f3(name='骆昊', age=38, tel='13866778899')
f3(user='骆昊', age=38, tel='13866778899')
f3(user='骆昊', age=38, mobile='13866778899')

#统计学生人数、名字以及考试成绩并计算平均值

num=int(input('the numbers of stud is:'))
names=[None]*num  #即建立一个names的列表,列表中有num个Nonetype(无)类型(即None)的元素
#names=[[]]*num #建立一个names的列表,列表中的元素也都是列表,有num个空列表元素
#总结:names是一个列表,列表中的元素为[ ]内部的东西与num发生运算产生的
grades=[None]*num
for index in range(num):
    #踩坑:input里面的 % 后面的数,要加上括号,否则报错
    names[index]=input('the name of stud %d is:'% (index + 1))   #由于这里的names不为数值型,这里不用对input进行类型转换
    grades[index]=int(input('the grade of stud %d is:'% (index + 1)))  #踩坑:由于这里的输入为数值型,所以必须对input进行类型转换
sums=0
for index in range(num):
    print('%s : %d '% (names[index],grades[index]))
    sums+=grades[index]
aver=sums/num
print(aver)
===================================================================================
#字典的使用
dic1={'whut':1,'hnu':2,'sichuan':3,'hunan':4}
#输出value
print(dic1['whut'])

#遍历key值,也可以使用keys(),但是下面的方法直接使用字典,简单一些
for a in dic1:
    print('%s-------->%d'%(a,dic1[a]))
#遍历value值
for b in dic1.values():
    print(b)
#同时遍历key value
for key,value in dic1.items():
    print(key,value)

#判断key是否在字典内,可以直接使用字典
if 'beijing' in dic1:
    print(yes)
if 'shanghai' not in dic1:
    print('not exist')

#get方法,获取一个key值
print(dic1.get('sichuan'))
print('========================================')

#popitem方法,按照栈的顺序删除字典元素,即先入后出
#pop方法,删除指定元素
print(dic1.popitem())
print(dic1.pop('whut',1)) #第二个参数 1 为可选参数,下面的也可以
print(dic1.pop('hnu'))

#清空字典clear
dic1.clear()
print(dic1)

======================================================
输出:
1
whut-------->1
hnu-------->2
sichuan-------->3
hunan-------->4
1
2
3
4
whut 1
hnu 2
sichuan 3
hunan 4
not exist
3
========================================
('hunan', 4)
1
2
{}
===========================================================

#字典的进阶:

#setdefault方法:
dic1={'whut':1,'hnu':2,'sichuan':3,'hunan':4}
dic1.setdefault('wuhan',5) #字典中没有wuhan,则添加一个
print(dic1)  #{'whut': 1, 'hnu': 2, 'sichuan': 3, 'hunan': 4, 'wuhan': 5}
dic1.setdefault('wuhan',6) #字典中存在wuhan,则不会改变原来的值
print(dic1)  #{'whut': 1, 'hnu': 2, 'sichuan': 3, 'hunan': 4, 'wuhan': 5}

#可以使用setdefalut进行统计字符串中字符出现的次数
a='if you want to sell american goods to japan,forget about it'
b={}
for c in a:
    b.setdefault(c,0)
    b[c]=b[c]+1
print(b) 
#{'i': 3, 'f': 2, ' ': 10, 'y': 1, 'o': 7, 'u': 2, 'w': 1, 'a': 6, 'n': 3, 't': 6, 's': 2, 'e': 3, 'l': 2, 'm': 1, 'r': 2, 'c': 1, 'g': 2, 'd': 1, 'j': 1, 'p': 1, ',': 1, 'b': 1}

a=['dont','believe','me','just','watch']

print(a[0]) #dont
print(a[1])
print(a[-1]) #倒着来,输出 watch,
print(a[-5]) #dont

#修改元素,直接赋值即可
a[0]='with'
print(a)

#添加元素
a.append('come on')
a.insert(1,'hello')
print(a)  #['with', 'hello', 'believe', 'me', 'just', 'watch', 'come on']

#删除元素

del a[1]
a.remove('come on')
a.pop()  #弹出最后一个元素
a.pop(0) #弹出第零个元素
print(a) #['believe', 'me', 'just']
===========================================================
b=['dont','believe','me','just','watch']

#列表的遍历
for ele in b:
    print(ele.title(),end=' ')

#列表的切片
c=b[1:4]    #1 - 3个元素
print('\n',c)
x=b[4:1:-1] #4 - 2
y=b[::-1] #倒序
print(x) #['watch', 'just', 'me']
print(y)

d=b     #注意这两个的不同之处,第一个没有复制,仅仅创建了一个新的标签
e=b[:]
===============================================================
#生成列表:生成表达式、生成器

list2 = [x**2 for x in range(1,11)]   #生成表达式
print(list2)   #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

list3 = [m + n for m in 'ABCDEFG' for n in '12345']
print(list3)  #['A1', 'A2', 'A3', 'A4', 'A5', 'B1', 'B2' ......
print(len(list3))  # 35,  5*7=35
================================================================
#生成器
def fib(n):
    a,b=0,1
    for x in range(n):
        a, b = b, a + b
        #带有yield的函数会被python翻译成一个生成器
        yield a  #返回a,并冻结在此,下次也从这里开始
        
gen = fib(20)  #调用fib时,返回了一个生成器
print(gen)     #<generator object fib at 0x0000008FCC5495C8>
for elem in gen: #通过循环多次调用生成器gen,每次循环都返回a,并冻结fib,直到下一次调用
    print(elem, end=' ') #1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 
print() #回车
class Test:

    def __init__(self, foo):
        self.__foo = foo

    def __bar(self): #前面有__ ,故这是一个私有方法
        print(self.__foo)
        print('__bar')

test = Test('hello')
#python 采用了name mangling的方法,在声明私有变量/属性时,将__membername变成了
# _classname__member,所以在外部调用私有属性/变量时,会提示找不到。其实我们可以通过python更改过的名字在类的外部访问私有成员
#这使类的私有成员可能被访问,造成漏洞,但在有些场合也有用
test.__bar() #会报错
test._Test__bar() #利用name mangling来访问私有属性
print(test._Test__foo) #访问私有变量
#   __init__()的返回值为None,返回值为空
#   python 3中,object类是所有类的基类

#(利用面向对象的python,使用property属性)在一个半径为r(输入)的游泳池周围修建一个宽度为3m的过道,造价为100元/m^2,求总预算

import math

class Mon(object): #一般都不写object,它是python3中默认的,这里只做说明
    def __init__(self,rad):
        self.rad=rad

    @property     #B站收藏有
    def radius(self):
        return self.rad

    @radius.setter  #从外部修改属性的方法,用来修改rad的值
    def radius(self,rad):
        self.rad=rad if rad>0 else 0
            
    @property
    def s1(self):
        return math.pi * self.rad * self.rad

#主程序
rads=float(input('please enter the radius:'))
mon=Mon(rads)
mon1=Mon(rads+3)
print((mon1.s1 - mon.s1)*100) #这里的mon.s1,是由于property修饰了s1,则可以像调用属性一样调用类方法
#property可以在不影响外部使用的情况下重构类的定义


#从外部进行修改,利用 @radius.setter下修饰的方法
mon.radius= -1 #这句是调用了 def radius(self,rad)
print(mon.radius) #调用了def radius(self),输出0
print(mon.s1) #0
class Test:

    def __init__(self, foo):
        self.__foo = foo

    def __bar(self):
        print(self.__foo)
        print('__bar')


def main():
    test = Test('hello')
    test._Test__bar()
    print(test._Test__foo)

#上面都是函数的定义,下面这条语句用于判断程序的入口,如果这个程序文件是被其他程序文件调用的文件,
#则不执行下面的语句(即上面的函数不会被调用)。 如果这个程序文件是主文件没有被调用,则上面下面的语句都执行
    
if __name__ == "__main__":
    main()
# python的time模块

'''
>>> import time
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=9, tm_mday=8, tm_hour=15, tm_min=44, tm_sec=49, tm_wday=6, tm_yday=251, tm_isdst=0)

'''

import time as t
import os

class Count():
    def __init__(self,**ti): #用关键字参数**t,让构造器可以传入任意多个参数来实现其他语言中的构造器重载
        if 'hour' in ti and 'minute' in ti and 'second' in ti:
            self._hour = ti['hour']   #hour前面一个单下划线,人们约定默认为私有变量,虽然可以访问,只是提醒人注意
            self._minute = ti['minute']
            self._second = ti['second']
        else:
            #localtime()返回的是一个元组,前六个元素分别为:年月日时分秒
            self.timetuple=t.localtime()
            self._hour = self.timetuple[3]
            self._minute = self.timetuple[4]
            self._second = self.timetuple[5]

    def timerun(self):
        self._second+=1
        if self._second==60:
            self._second=0
            self._minute+=1
            if self._minute==60:
                self._minute=0
                self._hour+=1

    def timeshow(self):
        print('%d -- %d -- %d'%(self._hour,self._minute,self._second))

if __name__ == '__main__':
    
    count=Count()
    # count = Count(hour=10, minute=5, second=58)
    while True:
        os.system('cls')  #双击文件运行,可实现清屏
        count.timeshow()
        t.sleep(1)        #程序延时一秒
        count.timerun()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值