educoder:实验十一 函数

第1关:定义判断质数的函数

任务描述

本关任务:编写一个能判断质数的函数。若参数是质数,返回true;否则返回false。 主程序输入一个数n,然后调用该函数判断其是否是质数,是则显示n是质数,否则显示n不是质数。

相关知识

为了完成本关任务,你需要掌握:如何定义函数。

定义函数

def <函数名> (<参数列表>): <函数体> return <返回值列表>

编程要求

根据提示,在右侧编辑器补充代码,将定义质数的函数补充完整。

测试说明

平台会对你编写的代码进行测试:

测试输入15; 预期输出: 15不是质数

测试输入:113 预期输出: 113是质数


穷则独善其身,达则兼济天下 开始你的任务吧,祝你成功!

代码:

n=eval(input("请输入一个数"))
def isprime(n):
  if n > 1:
     for i in range(2,n):
        if (n % i) == 0:
           print(n,"不是一个质数")
           break
     else:
        print(n,"是一个质数")
  else:
     print(n,"不是一个质数")
isprime(n)

第2关:绝对质数

任务描述

本关任务:编写一个输出所有两位数的绝对质数的小程序。 每行显示3个数,每个数后面四个空格 注意:isprime函数已经定义在本文件夹的程序isprime.py中

相关知识

为了完成本关任务,你需要掌握:1.什么是绝对质数,2.如何调用函数。

什么是绝对质数

一个质数,当它的数字位置对换以后仍为质数,这样的数称为绝对质数。例如17和71都是质数,所以17和71是绝对质数

调用函数

程序调用一个函数需要执行以下四个步骤: (1)调用程序在调用处暂停执行; (2)在调用时将实参复制给函数的形参; (3)执行函数体语句; (4)函数调用结束给出返回值,程序回到调用前的暂停处继续执行 函数名可以作为表达式的一部分,可以直接输出,可以出现在赋值语句,也可以作为其他函数的参数

测试说明

平台会对你编写的代码进行测试:

学而不思则罔,思而不学则殆。 开始你的任务吧,祝你成功!

代码:

from isprime import *
#代码开始
x=0
for i in range(11,100):
    y=str(i)
    if isprime(eval(y[0]+y[1]))and isprime(eval(y[1]+y[0])):
        print(i,end="    ")
        x+=1
        if x%3==0:
            print()
#代码结束

第3关:验证哥赫巴德猜想

任务描述

本关任务:验证100之内大于2的偶数符合哥赫巴德猜想。

哥赫巴德猜想是任一大于2的偶数都可写成两个质数之和。

注意:调用isprime函数(在isprime.py文件中)判断是否质数 每行显示五个式子。每个式子的整数显示两位,每个式子后面显示tab(\t)

 有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 开始你的任务吧,祝你成功!

代码:

from isprime import *
z,items=0,[]
for i in range(4,100,2):
    for x in range(2,100):
        for y in range(2,100):
            if isprime(x) and isprime(y) and i==x+y and i not in items:
                items.append(i)
                print("{:2d}={:2d}+{:2d}".format(i,x,y),end="\t")
                z+=1
                if z%5==0:
                    print()

第4关:判断三角形类型

任务描述

本关任务:编写一个根据三条边长判断三角形类型的函数。 若不能构成三角形,返回0. 若构成等边三角形,返回1. 若构成等腰三角形,返回2 若构成直角三角形,返回3. 若是其他三角形,返回4.

在主程序中,根据函数的返回值,显示对应的三角形类型

相关知识

为了完成本关任务,你需要掌握: 1.如何定义函数 2.如何调用函数

定义函数

def 函数名(形式参数): 函数内容 return 返回值

调用函数

函数名(实际参数)

测试输入:333

预期输出: 等边三角形

测试输入:123

预期输出: 不能构成三角形

测试输入:345

预期输出: 直角三角形


人的心灵是有翅膀的,会在梦中飞翔。 开始你的任务吧,祝你成功!

代码:

def sjx(a,b,c):
    lx=0
    if a+b<c and a+c<b and b+c<a:
        lx=0
    elif a==b==c:
        lx=1
    elif a==b or a==c or b==c:
        lx=2
    elif a**2+b**2==c**2 or a**2+c**2==b**2 or b**2+c**2==a**2:
        lx=3
    return lx
x=eval(input())
y=eval(input())
z=eval(input())
m=sjx(x,y,z)
if m==0:
    print("不能构成三角形")
elif m==1:
    print("等边三角形")
elif m==2:
    print("等腰三角形")
elif m==3:
    print("直角三角形")
else:
    print("一般三角形")

第5关:成语字典精确查询

任务描述

本关任务:编写一个能查询成语字典的小程序。 sy10文件夹的成语.txt的图片如下图所示

编程要求

根据提示,将函数cyjl补充完整,将文件成语.txt的成语加入到cyzd字典,键为成语,值为后面的内容。 将函数精确查询jqcx补充完整,输入成语,显示该成语的所有信息。若成语不存在,显示成语不存在 将主程序补充完整,用户可循环输入1进行精确查找;输入0,退出程序

测试说明

平台会对你编写的代码进行测试:

测试输入: 1精确查询0退出1 请输入成语事半功倍 拼音:shì bàn gōng bèi释义:指做事得法,因而费力小,收效大。出处:《孟子·公孙丑上》故事半古之人,功必倍之,惟此时为然。”示例:如能善用他的特长和经验,比较地容易获得~的效果。★邹韬奋《经历·前途》 1精确查询0退出1 请输入成语飞飞飞飞 没有此成语 1精确查询2模糊查询0退出0


开始你的任务吧,祝你成功!

代码:

cyzd = {}
c = input("1精确查询0退出")
def cyjl():
    f1 = open("sy10//成语.txt", "r", encoding="utf8")
    for line in f1:
        cy = line[:line.find(" ")].strip()
        js = line[line.find(" ") + 1:].strip()
        cyzd[cy] = js
    f1.close()
def jqcx():
    x = input("请输入成语")
    if x not in cyzd:
        print("没有此成语")
    else:
        print(cyzd[x])
cyjl()
while c != "0":
    if c == "1":
        jqcx()
    c = input("1精确查询0退出")

第6关:成语字典模糊查询

任务描述

本关任务:编写一个能查询成语字典的小程序。 sy10文件夹的成语.txt的图片如下图所示

编程要求

根据提示, 将函数模糊查询mhcx补充完整,输入词语,显示所有包含该词语的成语

将主程序补充完整,用户可循环输入1,进行精确查找;输入2,进行模糊查找;输入0,退出程序

测试说明

平台会对你编写的代码进行测试:

测试输入: 1精确查询2模糊查询0退出2 请输入词语梦 醉生梦死 醉死梦生 庄周梦蝶 庄生梦蝶 昼想夜梦 重温旧梦 至人无梦 云梦闲情 一梦华胥 一场春梦 夜长梦短 夜长梦多 哑子托梦 哑子寻梦 哑子做梦 熊罴入梦 同床各梦 同床异梦 如梦初觉 如梦初醒 如梦方醒 如梦如醉 如醉如梦 如痴如梦 人生如梦 鹏游蝶梦 南柯一梦 梦笔生花 梦断魂劳 梦幻泡影 梦魂颠倒 梦见周公 梦里南轲 梦寐以求 梦撒寮丁 梦撒撩丁 梦想颠倒 梦熊之喜 梦中说梦 眠思梦想 江淹梦笔 魂劳梦断 魂牵梦萦 魂驰梦想 魂颠梦倒 黄梁美梦 黄梁一梦 黄粱美梦 黄粱一梦 恍如梦境 恍如梦寐 槐南一梦 好梦不长 好梦难成 好梦难圆 酣然入梦 更长梦短 浮生若梦 分床同梦 飞熊入梦 丹漆随梦 大梦初醒 大梦方醒 春梦无痕 楚梦云雨 痴人说梦 半梦半醒 白日作梦 白日做梦 1精确查询2模糊查询0退出2 请输入词语拳 揎拳拢袖 揎拳掳袖 揎拳捋袖 揎拳裸臂 揎拳裸手 揎拳裸袖 揎拳攞袖 揎拳捰袖 揎拳舞袖 掀拳裸袖 无拳无勇 握拳透掌 握拳透爪 捰袖揎拳 袒臂挥拳 三拳不敌四手 三拳两脚 拳不离手,曲不离口 拳打脚踢 拳拳服膺 拳拳盛意 拳拳在念 拳拳之枕 拳头上立得人,胳膊上走得路 拳中掿沙 摩拳擦掌 磨拳擦掌 捋袖揎拳 裸袖揎拳 攞袖揎拳 毒手尊拳 撺拳拢袖 赤手空拳 嗔拳不打笑面 擦拳磨掌 擦拳抹掌 擦掌磨拳 猜拳行令 饱飨老拳 饱以老拳 白手空拳 1精确查询2模糊查询0退出0


开始你的任务吧,祝你成功!

代码:

cyzd = {}
c = input("1精确查询2模糊查询0退出")
def cyjl():
    f1 = open("sy10//成语.txt", "r", encoding="utf8")
    for line in f1:
        cy = line[:line.find("拼音")].strip()
        cyjx = line[line.find("拼音"):].strip()
        cyzd[cy] = cyjx
    f1.close()
def mhcx(x):
    for i in cyzd:
        if x in i:
            print(i)
def jqcx(x):
    if x in cyzd.keys():
        print(cyzd[x])
    else:
        print("成语不存在")
cyjl()
while c != "0":
    if c != "1":
        x = input("请输入词语")
        mhcx(x)
    else:
        x = input("请输入成语")
        jqcx(x)
    c = input("1精确查询2模糊查询0退出")

第7关:成语接龙小游戏

任务描述

本关任务:编写一个成语接龙小游戏。 在sy10文件夹下,有一个成语.txt文件,如下所示

在上述成语字典程序中,增加一个成语接龙的选项。 游戏规则如下: 用户输入一个成语,若用户输入的不是文件中的成语,则显示“非法成语,你输了” 若输入正确成语,系统会到成语文件中找到以你输入成语的最后一个字开始的成语。 若系统没有找到,则显示“你赢了。”退出接龙。 若系统找到了,则显示该成语。 用户继续输入以该成语结尾的字开始的成语,若输入的成语符合要求,则系统继续接龙。 若成语没有接龙,系统提示“没有接龙"

测试说明

补充yx函数,实现游戏过程

测试输入: 3 走马观花 花残月缺 缺衣少食 食案方丈 丈二和尚 尚虚中馈 溃不成军 没有接龙,你输了

测试输入: 3 狐假虎威 威风八面 面面俱到 你赢了

测试输入: 3 天下太平 平安无事 事半功倍 倍道而进 进出两难 非法成语,你输了


开始你的任务吧,祝你成功!

代码:

cyzd = {}
c = input("1精确查询2模糊查询3成语接龙0退出")
def cyjl():
    f1 = open("sy10//成语.txt", "r", encoding="utf8")
    for line in f1:
        cy = line[:line.find("拼音")].strip()
        cyjx = line[line.find("拼音"):].strip()
        cyzd[cy] = cyjx
    f1.close()
def mhcx(x):
    for y in cyzd.keys():
        if x in y:
            print(y)
def jqcx(x):
    if x in cyzd.keys():
        print(cyzd[x])
    else:
        print("成语不存在")
def yx1(x):
    y = []
    for i in cyzd:
        y.append(i)
    if x in y:
        for i in y:
            if x[-1] == i[0]:
                print(i)
                x = input("请输入成语")
                if x not in y or x[0] == i[-1]:
                    yx1(x)
                else:
                    print("没有接龙,你输了")
                break
        else:
            print("你赢了")
    else:
        print("非法成语,你输了")
cyjl()
while c != "0":
    if c == "1":
        x = input("请输入成语")
        jqcx(x)
    elif c == "2":
        x = input("请输入词语")
        mhcx(x)
    elif c == "3":
        x = input("请输入成语")
        yx1(x)
    c = input("1精确查询2模糊查询3成语接龙0退出")
物联沃分享整理
物联沃-IOTWORD物联网 » educoder:实验十一 函数

发表评论