Python程序设计 函数(二)

27 篇文章 10 订阅

实验十一 函数

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

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

def isprime(a):
#代码开始
    for i in range(2,n):
        if n % i == 0:
            return False
    else:
        return True
    return False
#代码结束
n=eval(input("请输入一个数"))
if isprime(n):
    print(n,"是一个质数")
else:
    print(n,"不是一个质数")

第2关:绝对质数

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

什么是绝对质数

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

调用函数

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

from isprime import *
#代码开始
n = 0
for i in range(10,100):
    a = int("".join(reversed(str(i))))
    if isprime(i) == True and isprime(a) == True:
        print("{:<6d}".format(i),end="")
        n += 1
        if n % 3 == 0:
            print()
#代码结束

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

验证100之内大于2的偶数符合哥赫巴德猜想。 哥赫巴德猜想是任一大于2的偶数都可写成两个质数之和。 注意:调用isprime函数(在isprime.py文件中)判断是否质数 每行显示五个式子。每个式子的整数显示两位,每个式子后面显示tab(\t)

from isprime import *
#代码开始
n = 0
for i in range(4,100,2):
    for j in range(2,i+1):
        if isprime(j) and isprime(i-j):
            print("{:>2}={:>2}+{:>2}".format(i,j,i-j),end="\t")
            n += 1
            if n % 5 == 0:
                print()
            break
#代码结束

第4关:判断三角形类型、

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

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

def sjx(a,b,c):
    #代码开始
    if a<b+c and b<a+c and c<a+b:
        if a == b == c:
            lx = 1
        elif a == b or a == c or b == c:
            lx = 2
        elif a*a+b*b==c*c or a*a+c*c==b*b or b*b+c*c==a*a:
            lx = 3
        else:
            lx = 4
    else:
        lx = 0
    #代码结束
    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,退出程序

def cyjl():
    f1=open("sy10//成语.txt","r",encoding="utf8")
    #代码开始
    cyzd = {}
    for i in f1:
        cyzd[i[:4]]=i.strip()[5:].strip()
    return cyzd
    #代码结束
    f1.close()

def jqcx(x):
#代码开始
    if x not in cyzd:
        print("没有此成语")
    else:
        print(cyzd[x])

#代码结束
cyzd={}
cyzd = cyjl()
c=input("1精确查询0退出")
while c!="0":
    #代码开始
    x = input("请输入成语")
    jqcx(x)
    c = input("1精确查询0退出")
    #代码结束

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

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

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

将主程序补充完整,用户可循环输入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():
#代码开始
    cy=input("请输入词语")
    for i in cyzd:
        if cy in i:
            print(i)
#代码结束

    
def jqcx(): 
    x=input("请输入成语")
    if x not in cyzd.keys():
        print("成语不存在")
    else:
        print(cyzd[x])

cyzd={}
cyjl()
c=input("1精确查询2模糊查询0退出")
while c!="0":
    #代码开始
    if c == "1":
        jqcx()
    if c == "2":
        mhcx()
    c = input("1精确查询2模糊查询0退出")
    #代码结束

第7关:成语接龙小游戏

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

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

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=input("请输入成语")
    for y in cyzd.keys():
        if x  in y:
            print(y)

    
def jqcx():
    x=input("请输入成语") 
    if x not in cyzd.keys():
        print("成语不存在")
    else:
        print(cyzd[x])

def yx():
     cy = input("请输入成语")
     m = cyzd.get(cy,0)
     f = 0
     while True:
        if m == 0:
            print("非法成语,你输了")
            break
        for i in cyzd:
            if i[0]==cy[-1]:
                print(i)
                n = i
                cy = input("请输入成语")
                m = cyzd.get(cy,0)
                break
        else:
            print("你赢了")
            f = 1
        if f == 1:
            break
        if cy[0] != n[-1]:
            print("没有接龙,你输了")
            break

cyzd={}
cyjl()
c=input("1精确查询2模糊查询3成语接龙0退出")
while c!="0":
        if  c=="1":
            jqcx()
        elif c=="2":
            mhcx()
        elif c=="3":
            yx()
        c=input("1精确查询2模糊查询3成语接龙0退出")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值