python小作业

  • 实验内容及过程(主要内容、操作步骤或程序代码)
  1. 13位ISBN的校验:        

def check(s):

t=0

a=1*int(s[5])+3*int(s[6])+1*int(s[7])+3*int(s[9])+1*int(s[10])+3*int(s[11])+1*int(s[12])+3*int(s[13])+1*int(s[14])+3*int(s[15])+1*int(s[16])+3*int(s[17])

  c=int(str(a)[-1])

  if not c==0:

     t=10-c

  return t

pn='ISBN-978-897283571-4'

print(check(pn))

  1. BMI指数计算:

name=input("Name:")

height=input("Height(m):")

weight=input("Weight(kg):")

BMI=float(float(weight)/(float(height)**2))

if BMI<18.5:

    print("体重过轻")

elif 18.5<=BMI<24:

    print("正常体重")

elif 24<=BMI<27:

    print("过重")

elif 27<=BMI<30:

    print("轻度肥胖")

elif 30<=BMI<35:

    print<("中度肥胖")

else:

    print("重度肥胖")

  1. 金币问题

a=int(input("请输入现有金币数:"))

i=1

while i<=365:

    a=a+10

    if i%7==0:

         a=a-5

    else:

         a=a

    i=i+1

print("一年后金币数:",a)

  1.  计算圆周长和面积的程序

import math

r=float(input("请输入圆的半径r:"))

c=2*math.pi*r

s=math.pi*r**2

print("圆的周长",c)

print("圆的面积",s)

***********************************************************************************

  • 实验内容及过程(主要内容、操作步骤或程序代码)
  1. 分别使用for和while循环计算n!            
  1.   n=int(input("enter the number:"))   

factorial=1

for i in range (1,n+1):

      factorial*=i

print("n!=",factorial)

  1.   n=int(input("n="))

i=1

s=1

while i!=n:

    i+=1

    s*=i

print("n!=",s)

  1. 101-200之前有多少个素数,并输出所有素数

    for i in range(101,201):

    for j in range (2,i):

        if i%j==0:

            break

    else:

        print(i," ",end="")

  1. 打印出所有的“水仙花数”

    for i in range(1,10):

    for j in range(0,10):

        for k in range(0,10):

            a=i*100+j*10+k

            if i*100+j*10+k==i**3+j**3+k**3:

                print(a," ",end="")

               

*******************************************************************

  • 实验内容及过程(主要内容、操作步骤或程序代码)
  1. 编写一个函数iterPower(base, exp),用循环的方式求baseexp       

def iterPower(base,exp):

if exp<=0:

return 1

else:

        return base*iterPower(base,exp-1)

print (iterPower(3,4))

  1. 编写一个函数iterPower(base, exp),用递归的方式求baseexp 

    def iterPower(bath,exp):

        if bath!=0 and exp==0:

            return 1

        elif exp>0 and exp%2==0:

            return iterPower(bath*bath,exp/2)

        elif exp>0 and exp%2!=0:

            return iterPower(bath,exp-1)*bath

print (iterPower(3,4))

  1. 递归经典程序—汉诺(Hanoi)塔问题

    def move(n,a,b,c):

            if n==1:

                print(a,"move to",c)

            else:

                move(n-1,a,c,b)

print(a,"move to",c)

move(n-1,b,a,c)

move(5,'a','b','c')

***********************************************************************************

  • 实验内容及过程(主要内容、操作步骤或程序代码)
  1. 利用循环创建一个包含100个偶数的列表,并且计算该列表的和与平均值,请分别使用while和for循环实现。采用文件输出结果。
  1. 利用while循环实现

i=0

n=0

ave=0

sum=0

list=[]

while i<100:

    i+=1

    if i%2==0:

        n+=1

        sum+=i

        ave=sum/n

        list1=[i]

        list.extend(list1)

print(list)

print('其总和为',sum)

print('其平均值为',ave)

def make_story():

f=open('list.text1','w')

f.write(str(list))

f.close()

make_story()

  1. 利用for循环实现

count=0

list=[]

for i in range(2,101,2):

    count +=i

    list1=[i]

    list.extend(list1)

ave=(int(count)/50)

print("列表是",list)

print("sum=",count)

print("ave",ave)

def make_list():

    f=open("list.text2","w")

    f.write(str(list))

    f.close()

make_list()

  1. 编写两个函数:假设L是列表,f是函数,f(e)应用到L的每个元素,并用返回值替换原来的元素。其中,f(e)分别定义为阶乘和斐波那契数
  1.  阶乘n!

def f(e):

    if e>=1:

        return e*f(e-1)

    else:

        return 1

li=[1,2,3]

for e in range(len(li)):

    li[e]=f(li[e])

print(li)

  1. 斐波那契数

def f(e):

    if e>=1:

        return e*f(e-1)

    else:

        return 1

li=[1,2,3]

for e in range(len(li)):

    li[e]=f(li[e])

print(li)

  1. 编写程序,运用列表或字典完成通讯录的基本功能

address_book={"nannan":111,"tongtong":222,"xiangxiang":333}

name=input("who you want to add:")

number=input("phone number:")

address_book[name]=number

print(address_book)

delete=input("who you want to delete:")

del address_book[delete]

print(address_book)

modify=input("whose number do you want to modify:")

right_number=input("right number:")

address_book[modify]=right_number

print(address_book)

print("all user:")

print(address_book)

search=input("search for person you want:")

print(address_book[search])

  • 实验内容及过程(主要内容、操作步骤或程序代码)
  1. 创建一个名为Undercut的简单游戏。在这个游戏中,两个玩家同时选择1-10的整数,若一个玩家选择的整数比对方选择的整数小1,则该玩家获胜,否则算打平手。

实验内容如下:

  1. 用类创建特定类型对象player:

#player

import random

class player():

    def __init__(self,name):

        self._name=name

        self._score=0

    def add_score(self):

        self._score=self._score+1

    def reset_score(self):

        self._score=0

    def get_name(self):

        return self._name

    def __str__(self):

        return "name='%s',score=%s"%(self._name,self._score)

    def __repr__(self):

            return "player(%s)"%str(self)

  1. 利用继承,再编写一个human的类作为人类玩家:

class human(player): #人类玩家继承player

    def __repr__(self): #定制派生类

        return "human(%s)"%str(self)

    def do_choice(self):

        while True:

            try:

                n = int(input('%s move (1-10: )' % self.get_name()))

                if 1 <= n <= 10:

                    return n

                else:

                    print('False!')

            except:

                print('except-----Oops!')

  1. 利用继承,再编写一个compuer的类作为计算机玩家:

class computer(player): #计算机玩家继承player

    def __repr__(self): #定制派生类

        return "computer(%s)"%str(self)

    def do_choice(self):

        return random.randint(1,10)

  1. 最后制定游戏规则:

def play_game(p1,p2):

    p1.reset_score()

    p2.reset_score()

    s1=p1.do_choice()

    s2=p2.do_choice()

    print("%s move: %s"%(p1.get_name(),s1))

    print("%s move: %s"%(p2.get_name(),s2))

    if s1==s2-1:

        p1.add_score()

        return p1,p2,"%s wins"%p1.get_name()

    elif s2==s1-1:

        p2.add_score()

        return p1,p2,"%s wins"%p2.get_name()

    else:

        return p1,p2,"no winner"

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值