Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python3学习案例

python3学习案例

作者头像
py3study
发布于 2020-01-03 02:35:04
发布于 2020-01-03 02:35:04
73900
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
请打印出
1024 * 768 = ***
"""
shu = 1024 * 768
print("1024 * 768 = %d" %shu)

"""
请打印出以下变量的值:
# -*- coding: utf-8 -*-
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello, "Bart"'
s4 = r'''Hello,
Lisa!'''
"""
n = 123
f = 456789 / 1000
s1 = "'Hello, World'"
s2 = "'Hello, \\'Adam\\''"
s3 = "r'Hello, \"Bart\"'"
s4 = 'r''\'\'\'Hello,\nLisa!\'\'\''
print('n=', n, '\nf=', f, '\ns1=', s1, '\ns2=', s2, '\ns3=', s3, '\ns4=', s4)

"""
×××的成绩从去年的72分提升到了今年的85分,请计算×××成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:
"""
zuo_nain = 72 / 100
jin_nain = 85 / 100
r = (jin_nain - zuo_nain) * 100
print("提升%.1f%%" %r )

"""
请用索引取出下面list的指定元素:
# -*- coding: utf-8 -*-
L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']
]
# 打印Apple:
print(?)
# 打印Python:
print(?)
# 打印Lisa:
print(?)
"""
L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']]
print(L[0][0])
print(L[1][1])
print(L[2][2])

"""
×××身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮×××计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
用if-elif判断并打印结果:
"""
s = input("高》:")
height = float(s)
a = input("重》:")
weight = float(a)

BMI = weight / height ** 2
if BMI < 18.5:
    print("过轻")
elif BMI < 25:
    print("正常")
elif BMI < 28:
    print("过重")
elif BMI < 32:
    print("肥胖")
elif BMI > 32:
    print("严重肥胖")

"""
请利用循环依次对list中的每个名字打印出Hello, xxx!L = ['Bart', 'Lisa', 'Adam']
"""
L = ['Bart', 'Lisa', 'Adam']
for i in L:
    print("Hello, %s" % i)

"""
实现将列表:['a','a','b','a','b','c']输出为字典:{'a':3,'b':2,'c':1}
"""
str_list = ['a', 'a', 'b', 'a', 'b', 'c']
st_set = set(['a', 'a', 'b', 'a', 'b', 'c'])
dic = {}
for i in st_set:
    cont = str_list.count(i)
    dic[i] = cont
print(dic)

"""
请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串:
"""
n1 = 233
n2 = 1000
print(hex(n1), hex(n2))

"""
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0 的两个解。
计算平方根可以调用math.sqrt()函数
"""
import math
def quadratic(a, b, c):
    b2 = b ** 2 - 4*a*c
    if not isinstance(a + b + c, (int, float)):
        raise TypeError('error type')
    if b2 >= 0:
        ma_x1 = math.sqrt(b ** 2 - 4*a*c)
        x1 = (-b - ma_x1) / (2 * a)
        x2 = (-b + ma_x1) / (2 * a)
        print("x1=%.2f ,x2=%.2f" % (x1, x2))
    else:
        print("无解")
quadratic(1, 5, 5)

"""
以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:
def product(x, y):
    return x * y
"""
def product(*arges):
    if len(arges) == 0:
        raise TypeError('参数不能为空, 否则没有意义!')
    s = 1
    for i in arges:
        if not isinstance(i, (int, float)):
            raise TypeError('error type')
        s = i * s
    #return s
    print(s)
product(10, 25)

"""
请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子ABC中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
"""
def move(n, a, b, c):
    if n < 0:
        product("请输入大于0")
    elif n == 1:
        print(a, '-->', c)
    else:
        move(n - 1, a, c, b)   # 1, A, B,  C
        move(1, a, b, c)       #1,  A, B,  C
        move(n - 1, b, a, c)   #1,  A, B,  C
move(2, 'A', 'B', 'C')

"""
利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
"""
def trim(s):
    if s[:1] == ' ':
        s = s[1:]
        print(s)
    elif s[-1:] == ' ':
        s = s[:-1]
        print(s)
    elif s[:1] == ' ' and s[-1:] == ' ':
        s = s[1:-1]
        print(s)
trim(" abc2" )

"""
请使用迭代查找一个list中最小和最大值,并返回一个tuple:
"""
def suh(L):
    if not isinstance(L, (list, tuple)):
        raise TypeError('param must be a list')
    max_L = min_L = L[0]
    for i in L:
        if max_L < i:
            max_L = i
        elif min_L > i:
            min_L = i
    print(min_L)
    print(max_L)
suh([8, 2, 4, 5])

"""
如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:
>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
AttributeError: 'int' object has no attribute 'lower'
使用内建的isinstance函数可以判断一个变量是不是字符串:

>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False
请修改列表生成式,通过添加if语句保证列表生成式能正确地执行:

# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = ??
"""
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = [s.lower() for s in L1 if isinstance(s, str)]
print(L2)

"""
杨辉三角定义如下:
          1
         / \
        1   1
       / \ / \
      1   2   1
     / \ / \ / \
    1   3   3   1
   / \ / \ / \ / \
  1   4   6   4   1
 / \ / \ / \ / \ / \
1   5   10  10  5   1

把每一行看做一个list,试写一个generator,不断输出下一行的list:
# 期待输出:
# [1]
# [1, 1]
# [1, 2, 1]
# [1, 3, 3, 1]
# [1, 4, 6, 4, 1]
# [1, 5, 10, 10, 5, 1]
# [1, 6, 15, 20, 15, 6, 1]
# [1, 7, 21, 35, 35, 21, 7, 1]
# [1, 8, 28, 56, 70, 56, 28, 8, 1]
# [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
"""
def triangles(n):
    L = [1]
    m = 0
    while n > m:
        yield L
        p = [L[a] + L[a + 1] for a in range(len(L) - 1)]
        #print(p)
        L = [1] + p + [1]
        m +=1
for i in triangles(11):
    print(i)

"""
利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']"""
def normalize(name):
    name = name.lower()
    name = name.title()
    return name
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)

"""
Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
"""
from functools import reduce
def prod(G):
    def fn(x, y):
        return x * y
    return reduce(fn, G)   # def f(): retuen x*y  reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
print("3 * 5 * 7 * 9 =", prod([3, 5, 7, 9]))

"""
利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456"""
def str2float(s):
    for i in range(len(s)):
        if s[i] == '.':
            n = i

    def num1(x, y = 0):
        return x * 10 + y

    Digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

    def digit(x):
        return Digits[x]

    return reduce(num1, map(digit, s[ : n])) + reduce(num1, map(digit, s[n + 1 : ])) / pow(10, (len(s) - n - 1))
print("str2float('123.456') =", str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')

"""
假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序:
"""
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):
    m = t[0]
    return m

def by_score(t):
    n=-t[1]
    return n

L1 = sorted(L, key=by_score)
L2 = sorted(L, key=by_name)
print(L1)
print(L2)

"""
回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:
"""
def is_palindrome(n):
    c = 0
    for i in range(len(str(n))):
        if str(n)[i] != str(n)[-i-1]:
            c = c+1
    return c == 0

#测试
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))
if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
    print('测试成功!')
else:
    print('测试失败!')

"""
def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs
f1 = count()[0]
print(f1())
不加括号函数不执行。
利用闭包返回一个计数器函数,每次调用它返回递增整数:
"""
def createCounter():
    f = []
    def counter():
        f.append(counter)
        return len(f)
    return counter
# 测试:
counterA = createCounter()
print(counterA(), counterA(), counterA(), counterA(), counterA()) # 1 2 3 4 5
counterB = createCounter()
if [counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]:
    print('测试通过!')
else:
    print('测试失败!')

"""
请用匿名函数改造下面的代码:
def is_odd(n):
    return n % 2 == 1

L = list(filter(is_odd, range(1, 20)))
print(L)
"""
L = list(filter(lambda n:n % 2 ==1 , range(1, 20)))
print(L)

"""
请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:
"""
import time, functools
def metric(fn):
    @functools.wraps(fn)
    def wrapper(*args, **kw):
        start = time.time()
        re = fn(*args, **kw)
        end = time.time()
        print('%s executed in %s ms' % (fn.__name__, end-start))
        return fn(*args, **kw)
    return wrapper

# 测试
@metric
def fast(x, y):
    time.sleep(0.0012)
    return x + y;
@metric
def slow(x, y, z):
    time.sleep(0.1234)
    return x * y * z;
f = fast(11, 22)
s = slow(11, 22, 33)
if f != 33:
    print('测试失败!')
elif s != 7986:
    print('测试失败!')

"""
请把下面的Student对象的gender字段对外隐藏起来,用get_gender()和set_gender()代替,并检查参数有效性:
class Student(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
"""
class Student(object):
    def __init__(self, name, gender):
        self.name = name
        self.__gender = gender
    def get_gender(self):
        return self.__gender
    def set_gender(self, gender):
        self.__gender = gender

bart = Student('Bart', 'male')
print(bart.name, bart.get_gender())
if bart.get_gender() != 'male':
    print('测试失败!')
else:
    bart.set_gender('female')
    if bart.get_gender() != 'female':
        print('测试失败!')
    else:
        print('测试成功!')

"""
为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加:
"""
class Student(object):
    count = 0
    def __init__(self, name):
        self.name = name
        Student.count+=1
# 测试:
if Student.count != 0:
    print('测试失败!')
else:
    bart = Student('Bart')
    if Student.count != 1:
        print('测试失败!')
    else:
        lisa = Student('Bart')
        if Student.count != 2:
            print('测试失败!')
        else:
            print('Students:', Student.count)
            print('测试通过!')

"""
请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution:
"""
class Screen(object):
    @property
    def width(self):
        return self._width

    @width.setter
    def width(self, width_value):
        self._width = width_value

    @property
    def height(self):
        return  self._height
    @height.setter
    def height(self, height_value):
        self._height = height_value

    @property
    def resolution(self):
        return self._width * self._height

# 测试:
s = Screen()
s.width = 1024
s.height = 768
print('resolution =', s.resolution)
if s.resolution == 786432:
    print('测试通过!')
else:
    print('测试失败!')

""""
运行下面的代码,根据异常信息进行分析,定位出错误源头,并修复:
from functools import reduce

def str2num(s):
    return int(s)

def calc(exp):
    ss = exp.split('+')
    ns = map(str2num, ss)
    return reduce(lambda acc, x: acc + x, ns)

def main():
    r = calc('100 + 200 + 345')
    print('100 + 200 + 345 =', r)
    r = calc('99 + 88 + 7.6')
    print('99 + 88 + 7.6 =', r)

main()
"""
from functools import reduce
def str2num(s):
    s = s.strip()
    if s.replace('.','').isdigit():
        if s.count('.') == 0:
            return int(s)
        else:
            return float(s)
    else:
        raise ValueError('input error')

def calc(exp):
    ss = exp.split('+')
    print('ss=',ss)
    ns = map(str2num, ss)
    return reduce(lambda acc, x: acc + x, ns)

def main():
    r = calc('100 + 200 + 345')
    print('100 + 200 + 345 =', r)
    r = calc('99 + 88 + 7.6')
    print('99 + 88 + 7.6 =', r)

main()

"""
请将本地一个文本文件读为一个str并打印出来:
"""
#写入
fpath_wrig = r'C:\Users\Administrator\Desktop\LUOZIX.txt'
with open(fpath_wrig, 'w') as f:
    w = f.write("woshiwshui\n wozainaer \n woyaoshfuu")

#追加
fpath_wria = r'C:\Users\Administrator\Desktop\LUOZIX.txt'
with open(fpath_wria, 'a') as f:
    w = f.write("\n1234455")

#1查看
fpath = r'C:\Users\Administrator\Desktop\LUOZIX.txt'
with open(fpath, 'r') as f:
    s = f.read()
    print(s)

#2查看
with open(fpath, 'r') as fs:
    ss = fs.readlines()
    for x in ss:
        print(x)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python基础学习笔记
---------2018.1.24------------ round是向上取整,引用方式为round(number[,ndigits]) 而floor是向下取整,floor函数通过import math导入,引用方式为math.floor(number) str函数,它会把值转换成合理形式的字符串,函数原型为str(object)//字符串要用双引 号引起来,数字不需要 repr函数,它会创建一个字符串.以合法的Python表达式的形式来表示值,函数原型为repr (object) 如果你希望打印一
Angel_Kitty
2018/04/08
1.3K0
Python入门 (二)
本文是个人python学习笔记,学习资料为廖雪峰python教程,如需更多内容,请移步廖老师官方网站。
py3study
2020/01/17
7660
python3.6.4的学习
[root@mantisbt01 python]# ./13.py Please input your name:hadoop Please input your height(m):1.80 Please input your height(kg):75.3 hadoop , Your bmi value is: 23.24 ! Your body type is 正常 [root@mantisbt01 python]# python Python 3.6.4 (default, Mar 19 2018, 10:30:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information.
py3study
2020/01/08
6410
Python学习笔记三(开发进阶)
在Python中,一个.py文件就称之为一个模块(Module),不同的文件目录称为包(Package),每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。
全栈程序员站长
2022/07/05
2250
python:函数的高级特性
很多语言中,都允许把函数本身做为参数,传递给其它参数:即所谓的高阶函数。python中也有类似特性: 一、map/reduce、filter、sorted hadoop里的map-reduce思想在python里已经变成内置函数了。map是将某个函数逐一作用于列表中的每个元素。reduce则先从列表中取头2个元素,传到指定函数,然后将计算结果与余下元素依次重复,直到List处理完。 1.1 map示例:(将List中的所有元素*10) def fn_map(x): print("fn_map->",
菩提树下的杨过
2018/05/28
9750
【收藏】Python教程基础篇,超详细超长!
前往 官网下载 对应平台对应工具。另外Python2.7版本和3.3版本并不兼容,所以开发时请注意使用Python的版本。
昱良
2019/07/04
1.7K0
Python学习笔记(四)·函数式编程
函数是 Python 内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。
公爵
2022/09/28
9600
Python学习笔记(四)·函数式编程
【Python】Python3.X笔记
继承: 可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只要新增自己特有的方法,也能够把 父类不适合的方法覆盖重写。
前端修罗场
2023/10/07
2480
Python基础
Python,是龟叔在1989年为了打发无聊的圣诞节而编写的一门编程语言,特点是优雅、明确、简单,现今拥有丰富的标准库和第三方库。 Python适合开发Web网站和各种网络服务,系统工具和脚本,作为“胶水”语言把其他语言开发的模块包装起来使用,科学计算等等。
py3study
2020/01/02
5620
Python3学习集合
打印 print("hello") print("这样","可以","连接","起来吗?",",自动识别为空格") print("试试"+"加好可以连接吗?","事实证明是可以的") print("1
一点儿也不潇洒
2018/08/07
1.2K0
Python之路-day6
所谓高阶函数,简单点说就是将一个函数作为另一个函数的传入参数,这样我们就称这个组合函数为高阶函数。 举个例子: map()函数能接收两个参数,一个为函数,一个为Interable。 函数f(x)=x*3,运用此函数将列表[1,2,3,4,5,6]中的元素扩大3倍。 #高阶函数 deff(x): returnx*3 y =map(f,[1,2,3,4,5,6]) print(list(y)) 输出是: [3, 6, 9, 12, 15, 18] 如果不使用“list()”,会怎样呢? #高阶函数 deff(x
企鹅号小编
2018/01/24
7190
Python之路-day6
python入门demo
#coding=utf-8 #python中list l = [95.5,85,59] #指定索引位置插入元素 l.insert(0,1); #删除指定索引位置元素 y = l.pop(2) #直接替换值 l[1] = 100 #创建final属性的list 在python中叫做 tuple:元组 t = ('a',2,3) #元组中嵌套list t2 = (1,2,[3,4]) ''' python中流程判断语句 ''' #if else #age = raw_input("请输入年龄:") age
py3study
2020/01/10
5920
Python 入门笔记
Python 入门非常简单,但是对于 Python 的基础知识确也有许多非常重要的内容,为了入门,我决定重新学习一遍 Python。首先从网上的课程开始。
zucchiniy
2019/10/30
6520
python之高阶函数和匿名函数
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
py3study
2020/01/16
4730
Python学习-计算BMI的小程序
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
py3study
2020/01/07
1.1K0
【Python】Python核心编程
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
用户7886150
2020/12/29
1.1K0
python3–函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 任何一个比较牛逼的程序均由多个函数封装而成。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返
老七Linux
2018/05/09
1.8K0
Python基础笔记
Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
他叫自己MR.张
2019/07/01
1K0
python
目录:又称为文件夹,是包含所有的文件 路径:是反映目录和文件的位置 文件位置:windows:盘符:\文件夹\文件的avi linux:/home/主文件夹/0520/day01/a
yaoyaoah
2020/04/09
9280
廖雪峰的 Python 教程_python基础教程廖雪pdf
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
8890
相关推荐
Python基础学习笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验