【Python】“笨办法”学python习题41-面向对象术语的练习

这篇具有很好参考价值的文章主要介绍了【Python】“笨办法”学python习题41-面向对象术语的练习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用以下代码会无限输出类似于:
1.class X(Y):创建一个叫X的类,它是Y的一种
2.class X(object):def init(self,J):类X有一个__init__,它接收self和J作为参数
3.class X(object):def M(self,J):类X有一个名M的函数,它接收self和J作为参数
4.foo = X():将foo设为类X的一个实例
5.foo.M(J):从foo中找到M函数,并使用self和J参数调用它
6.foo.K = Q:从foo中获取K属性,并将其设为Q
来帮助你更好地认识类、对象、实例、属性

测试代码

import random
from urllib.request import urlopen
import sys

WORD_URL = "http://learncodethehardway.org/words.txt"
WORDS = []

PHRASES = {
    "class %%%(%%%):":
      "Make a class named %%% that is-a %%%.",
    "class %%%(object):\n\tdef __init__(self, ***)" :
      "class %%% has-a __init__ that takes self and *** parameters.",
    "class %%%(object):\n\tdef ***(self, @@@)" :
      "class %%% has-a function named *** that takes self and @@@ parameters.",
    "*** = %%%()":
      "Set *** to an instance of class %%%.",
    "***.***(@@@)":
      "From *** get the *** function, and call it with parameters self, @@@.",
    "***.*** = '***'":
      "From *** get the *** attribute and set it to '***'."
}

# do they want to drill phrases first
#sys.argv是一个包含命令行参数的列表
if len(sys.argv) == 2 and sys.argv[1] == "english":
    PHRASES_FIRST = True
else:
    PHRASES_FIRST = False

#从链接中获取单词并填充进WORDS列表
for word in urlopen(WORD_URL).readlines():
    WORDS.append(str(word.strip(), encoding = "utf-8"))

#count()函数用来统计指定元素在目标对象中出现的次数
#random.sample(population, k)
#population表示要从中进行抽样的序列,可以是一个列表、元组或集合等可迭代对象
#k表示要抽取的样本数量,必须是一个非负整数且不大于population的长度
#最终返回一个新的列表,包含了随机抽取的k个元素。
def convert(snippet, phrase):
    #capitalize()将字符串的第一个字符转换为大写字母,并将所有其他字符(如果有的话)转换为小写
    #此处对抽到的单词进行这类处理
    class_names = [w.capitalize() for w in
                   random.sample(WORDS, snippet.count("%%%"))]
    other_names = random.sample(WORDS, snippet.count("***"))
    results = []
    param_names = []

    #random.randint(a, b)
    #表示闭区间[a,b],生成一个位于闭区间内的随机整数,返回值为生成的随机整数
    for i in range(0, snippet.count("@@@")):
        param_count = random.randint(1,3)
        param_names.append(', '.join(random.sample(WORDS, param_count)))

    for sentence in snippet, phrase:
        #[:]对列表中所有元素进行切片操作
        #这是python中复制列表的方法
        result = sentence[:]

        #str.replace(old, new [, count])中括号中的内容可以没有
        #用一个新字符或字符串替换字符串中某个字符串中的原有的字符或子串
        #指定 count后,只有str中前count个旧字符串old被替换
        for word in class_names:
            result = result.replace("%%%", word, 1)

        for word in other_names:
            result = result.replace("***", word, 1)

        for word in param_names:
            result = result.replace("@@@", word, 1)

        results.append(result)

    return results

# keep going until they answer "yes"
try:
  while True:
    snippets = list(PHRASES.keys())
    #用于将一个列表中的元素打乱顺序,不会生成新的列表
    random.shuffle(snippets)

    #遍历列表snippets中的每个元素并赋给snippet
    for snippet in snippets:
        phrase = PHRASES[snippet]
        question, answer = convert(snippet, phrase)
        if PHRASES_FIRST:
            question, answer = answer, question

        print(question)

        input(">")
        print(f"ANSWER: {answer}\n\n")
except EOFError:
  print("\nBye")

运行结果
可以在>后输出answer的结果,通过直接运行的练习了解各个概念。
balance、cart等单词仅作为类名、属性名、参数名等文章来源地址https://www.toymoban.com/news/detail-833660.html

PS D:\pystudy> & D:/anaconda3/python.exe d:/pystudy/oop_test.py english
class Balance has-a __init__ that takes self and cart parameters.
>
ANSWER: class Balance(object):
        def __init__(self, cart)


From cart get the branch attribute and set it to 'drawer'.
>
ANSWER: cart.branch = 'drawer'

到了这里,关于【Python】“笨办法”学python习题41-面向对象术语的练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python练习题

    【程序 1】 题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 使用 permutations函数 【程序 3】 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 【程序 4】 题目:输入某年某月某日,判

    2024年02月08日
    浏览(27)
  • python文件练习题

    【问题描述】 从一个文本文件内读入任意多个学生的分数,求出最高分,最低分和平均分存入文件result.txt内。 【输入形式】 一个文件,文件中分数之间由换行隔开,输入的文件名为grade.txt。输入的分数都是整数。 【输出形式】 计算出grade.txt中所有分数的最高分,最低分和

    2024年02月03日
    浏览(33)
  • 【练习题】python列表

    1. 基础题 已知一个数字列表,打印列表中所有的奇数 已知一个数字列表,打印列表中所有能被能被3整除但是不能被2整除的数 已知一个数字列表,计算所有偶数的和 已知一个数字列表,统计列表中十位数是 1 的数的个数 已知一个列表,获取列表中下标为奇数是所有元素(从

    2024年02月05日
    浏览(32)
  • 【Python】基础练习题

    1)从random库中选取相应的函数,用蒙特卡罗方法(统计实验方法)求解pi。 2)一个笼中共有鸡和兔15只,它们的脚一共有40只,问有多少只鸡?有多少只兔? 3) “猴子吃桃”问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下

    2024年02月07日
    浏览(33)
  • python 基础练习题

    目录 1、定义两个变量,交换两个变量【使用多种方式】 2、给定成绩,判断用户成绩的档次 3. 作业:下列哪一项是“4是奇数或-9为正数”的否定( ) 4. 作业:判断一个整数是奇数还是偶数 5. 求矩形的面积和周长 6. 根据天数(从控制台上输入)计算这一年中的周数和剩余的

    2024年04月12日
    浏览(33)
  • python基础操作练习题

    使用版本:python 3.6.8 IDE:pycharm 这些练习题是在神经网络与深度学习课程上老师提供的,原因是有些同学没学过python,作为简单的练手习题。 题目都很简单,加上python本身也比较简单,有些题目的作答可以一行代码实现(虽然可读性就下降了)。 2.1 数位之和 编写程序,输入

    2024年02月08日
    浏览(31)
  • Python模块练习题-测试你的Python技能。

    首先这边有给准备一些python资料、源码、练习题、教程皆可点击文章下方名片获取此处跳转 1.logging模块有几个日志级别? 2.请配置logging模块,使其在屏幕和文件里同时打印以下格式的日志 代码; 3.json、pickle、shelve三个区别是什么? 首先,这三个模块都是序列化工具。 jso

    2024年02月01日
    浏览(29)
  • Python二级 每周练习题20

    如果你感觉有收获,欢迎给我打赏 ———— 以激励我输出更多优质内容 日期计算器 设计一款日期计算程序,能否实现下面的功能: (1)要求用户分别输入年、月、日(分三次输入); (2)程序自动会根据输入的年月日计算出这一天是这一年的第几天; (3)输出格式为:这是**年

    2024年02月07日
    浏览(30)
  • 24道Python面试练习题

    答:在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函数外,Python还使用fliter(),map(),reduce(),apply()函数来支持函数式编程。 答:匿名函数,也就是lambda函数,通常用在函数体比较简单的函数上。匿名函数顾名思义就是函数没有名字,因

    2023年04月20日
    浏览(31)
  • python练习题__列表

    题 目: mlist1 = [\\\'Adversity Awake:\\\', \\\'Cross \\\', \\\'the\\\', \\\'stars\\\', \\\'over\\\', \\\'the\\\', \\\'moon\\\', \\\'to\\\', \\\'meet\\\', \\\'your\\\', \\\'better\\\', \\\'self\\\'] 访问列表中第一个元素的值 分 析: 答 案: mlist1 = [\\\'Adversity Awake:\\\', \\\'Cross \\\', \\\'the\\\', \\\'stars\\\', \\\'over\\\', \\\'the\\\', \\\'moon\\\', \\\'to\\\', \\\'meet\\\', \\\'your\\\', \\\'better\\\', \\\'self\\\'] # 访问第一个元素 print(\\\"访问列表第一个

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包