python实验二

实验二:Python程序设计之结构与复用

一.实验目的

1.掌握程序的分支、循环等控制结构;

2.掌握random随机库的使用方法;

3.了解程序的异常处理及用法;

4.掌握函数的定义和调用方法。

二.知识要点

1.程序控制结构

python实验二_第1张图片

  1. 函数和代码复用

python实验二_第2张图片

三、实验内容

1.猜数字游戏。在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“你猜的数字大于正确答案”;小于预设的数,显示“你猜的数字小于正确答案”,如此循环,直至猜中该数,显示“你猜了N次,猜对了,真厉害”,其中N是用户输入数字的次数。

实验代码:

#GuessNumberV1.py

guess = 0   #猜的数字

secert = 7  #预设的数字

times = 1   #猜的次数

 

print('---------欢迎参加猜数字游戏,请开始-------')

#输出提示信息

while guess != secert:  #条件

    guess = int( input('@数字区间0-9,请输入你猜的数字:'))

    print('你输入的数字是:',guess)     #展示用户输入

    #这里是,号,不是加号,因为int不能与string直接相连

    #错误如下

    #TypeError: can only concatenate str (not "int") to str

    if guess ==secert:     #判断猜的数字是否为预设的数字

        print('你猜了{}次,你猜对了,真厉害!'.format( times))

    else:       #如果不正确

        if guess <secert:      #猜的数字小于预设的数字

            print('你猜的数字小于正确答案!')

        else:       #猜的数字大于预设的数字

            print('你猜的数字大于正确答案!')

    times += 1

print('游戏结束')

实验结果:

python实验二_第3张图片

2.猜数字游戏续。改编1中的猜数字游戏,让计算机能够随机产生一个预设数字,范围在0-100之间,其他游戏规则不变。

实验代码:

#GuessNumberV2.py

import random


guess = 0   #猜的数字

secert = random.randint(0, 100)  #生成0-100的随机数

times = 1   #猜的次数

 

print('---------欢迎参加猜数字游戏,请开始-------')

#输出提示信息

while guess != secert:  #条件

    guess = int( input('@数字区间0-100,请输入你猜的数字:'))

    print('你输入的数字是:',guess)     #展示用户输入

    #这里是,号,不是加号,因为int不能与string直接相连

    #错误如下

    #TypeError: can only concatenate str (not "int") to str

    if guess == secert:     #判断猜的数字是否为预设的数字

        print('你猜了{}次,你猜对了,真厉害!'.format( times))

    else:      #如果不正确

        if guess < secert:      #猜的数字小于预设的数字

            print('你猜的数字小于正确答案!')

        else:       #猜的数字大于预设的数字

            print('你猜的数字大于正确答案!')

    times += 1

print('游戏结束')

实验结果:

python实验二_第4张图片

  1. 猜数字游戏再续。用变量maxtime

s设置允许猜数字的最大次数(比如最多只允许猜6次maxtimes=6),并在猜错后提示还有几次机会。用for循环改写整个程序,并提交。

实验代码:

#GuessNumberV3.py

import random

 
guess = 0   #猜的数字

secert = random.randint(0, 100) 
#生成0-100的随机数

times = 1   #猜的次数

maxtimes = 7    #最大次数


print('---------欢迎参加猜数字游戏,请开始-------')

#输出提示信息

for i in range(1, maxtimes+1): 
#计数循环maxtimes次

    guess = int( input('@数字区间0-100,请输入你猜的数字:'))

    print('你输入的数字是:',guess)     #展示用户输入

    #这里是,号,不是加号,因为int不能与string直接相连

    #错误如下

    #TypeError: can only concatenate str (not "int") to str

    if guess == secert:     #判断猜的数字是否为预设的数字

        print('你猜了{}次,你猜对了,真厉害!'.format( times))

        break    #跳出循环

    else:       #如果不正确

        if i == maxtimes:       #猜的次数够了

            print('你并没有猜出这个数字')

        else:

            if guess < secert:      #猜的数字小于预设的数字

                print('你猜的数字小于正确答案!')

            else:       #猜的数字大于预设的数字

                print('你猜的数字大于正确答案!')

            print('你还可以猜'+str(maxtimes-i)+'次')

    times += 1      #次数加1

print('游戏结束')

实验结果:
python实验二_第5张图片

4.猜数字游戏之续了又续。为了增加代码的复用性,将猜数字游戏封装为函数GuessSecret(maxtimes),将允许猜数字的最大次数maxtimes作为参数。在调用GuessSecret时允许用户自己设置maxtimes,美化程序的输出界面。提交程序文件。

实验代码:

#GuessNumberV4.py

import random

 

def GuessSecert(maxtimes):

 

    guess = 0   #猜的数字

    secert = random.randint(0, 100)  #生成0-100的随机数

    times = 1   #猜的次数

    

   	
    print('--------------------------------------')

    print('---                                ---')

    print('-------欢迎参加猜数字游戏,请开始-------')

    print('---                                ---')

    print('--------------------------------------')

    #输出提示信息

    for i in range(1, maxtimes+1):  #计数循环maxtimes次

        guess = int(input('@数字区间0-100,请输入你猜的数字:'))

        print('你输入的数字是:',guess)     #展示用户输入

        #这里是,号,不是加号,因为int不能与string直接相连

        #错误如下

        #TypeError: can only concatenate str (not "int") to str

        if guess == secert:     #判断猜的数字是否为预设的数字

            print('你猜了{}次,你猜对了,真厉害!'.format( times))

            break    #跳出循环

        else:       #如果不正确

            if i == maxtimes:       #猜的次数够了

                print('你并没有猜出这个数字')

            else:

                if guess < secert:      #猜的数字小于预设的数字
               
                    print('你猜的数字小于正确答案!')

               
	        else:       #猜的数字大于预设的数字

                   
                    print('你猜的数字大于正确答案!')

                print('你还可以猜'+str(maxtimes-i)+'次')

        times += 1      #次数加1

    print('游戏结束')

    

maxts = eval(input('@请输入最大次数:'))
GuessSecert(maxts)

实验结果:

python实验二_第6张图片

  1. 递归法绘制科赫曲线。“科赫曲线绘制”程序(利用强大的搜索能力)逐行输入其中,按自己的思路进行修改并运行效果,体会递归思想。

实验代码:

#KochDrawV2.py

import turtle

 

def koch(size, n):      #size:边长  n:结束
   
    if n == 0:      #基例
	#如果是0阶,即绘制一条直线
	turtle.fd(size)
   
    else:
	for angle in [0, 60, -120, 60]:    
	#turtle的角度数组
	   turtle.left(angle)       #向左转angle度
           koch(size/3, n-1)    #递归调用

def main():

    turtle.speed('fastest')     #绘制速度最快

   
    turtle.setup(600,600)       #画笔起始点

    turtle.penup()
    turtle.goto(-200, 100)      #到达该点

    turtle.pendown() 
    turtle.pensize(2)       #画笔粗细
    level = 5      # 5阶科赫雪花,阶数

    #绘制雪花的三分之一,然后向右转120度,内角即为60度,3*60=180,即一个正三角形

   
    koch(400,level)     #绘制一个level阶,长度为400i像素的科赫曲线

    turtle.right(120)

   
    koch(400,level)     

   
    turtle.right(120)

   
    koch(400,level)

   turtle.hideturtle()     #隐藏画笔

    turtle.done()       #结束绘画

    

main()

实验结果:

python实验二_第7张图片

四、实验总结

  1. print()函数的参数是可变参数,用“,”号分割开,

2.整数类型和字符串类型不能直接使用加号

及进行连接,如果进行连接,则会出现以下错误:

错误如下

TypeError: can only concatenate str (not “int”) to str

3.for i in range()所代表的计数循环,以及while所代表的无限循环的使用方法。其中range(m)生成的序列是从0到m-1,如果是range(m, n)就是从m到n-1。

4.break语句的使用方法及作用,break只能跳出内部循环,而不能跳出外部循环。

5.递归函数一定是有参函数,且递归函数一定有基例来使函数结束,递归函数的结构是由分支语句加函数组成的。

你可能感兴趣的:(Python)