Python程序设计之结构与复用

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

guess=0         #输入的数字
secret=7        #预设的数字
times=1         #猜数字的次数

print("---------欢迎参加猜数字游戏,请开始---------")
while guess!=secret:    #条件
    guess=int(input("@数字区间0-9,请输入你猜的数字:"))
    print("你输入的数字是:",guess)
    if guess==secret:    #如果输入的数字等于预设的数字
        print("你猜了{}次,猜对了,真厉害".format(times))
    else:
        if guess<secret:   #如果输入的数字小于预设的数字
            print("你猜的数字小于正确答案")
        else:		#如果输入的数字大于预设的数字
            print("你猜的数字大于正确答案")
    times+=1	#每猜一次计数自加1
print("游戏结束")

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

import random

guess=0         #输入的数字
times=1         #猜数字的次数
secret=random.randint(0,100)    #生成随机数

print("---------欢迎参加猜数字游戏,请开始---------")
while guess!=secret:    #条件
    guess=int(input("@数字区间0-100,请输入你猜的数字:"))
    print("你输入的数字是:",guess)
    if guess==secret:       #如果输入的数字等于预设的数字
        print("你猜了{}次,猜对了,真厉害".format(times))
    else:
        if guess<secret:    #如果输入的数字小于预设的数字
            print("你猜的数字小于正确答案")
        else:               #如果输入的数字大于预设的数字
            print("你猜的数字大于正确答案")
    times+=1                #每猜一次计数自加1
print("游戏结束")

在这里插入图片描述

  1. 猜数字游戏再续。用变量maxtimes设置允许猜数字的最大次数(比如最多只允许猜6次maxtimes=6),并在猜错后提示还有几次机会。用for循环改写整个程序。(提示,猜对后可使用break跳出循环)
import random

guess=0         #输入的数字
times=1         #猜数字的次数
secret=random.randint(0,100)    #生成随机数
maxtimes=6      #猜数字的最大次数

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

for value in range(1,maxtimes+1):
    if guess != secret:  # 条件
        guess = int(input("@数字区间0-100,请输入你猜的数字:"))
        print("你输入的数字是:", guess)
        maxtimes -=1    #每猜一次次数自减1
        if guess == secret:  # 如果输入的数字等于预设的数字
            print("你猜了{}次,猜对了,真厉害".format(times))
            break
        else:
            if guess < secret:  # 如果输入的数字小于预设的数字
                print("你猜的数字小于正确答案")
            else:  # 如果输入的数字大于预设的数字
                print("你猜的数字大于正确答案")
            print("你还有 %d 次机会" %(maxtimes))
        times += 1  # 每猜一次计数自加1

print("游戏结束")

在这里插入图片描述

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

import random

def GuessSecret(maxtimes):
    guess = 0  # 输入的数字
    times = 1  # 猜数字的次数
    secret = random.randint(0, 100)  # 生成随机数

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

    for value in range(1, maxtimes + 1):
        if guess != secret:  # 条件
            guess = int(input("@数字区间0-100,请输入你猜的数字:"))
            print("你输入的数字是:", guess)
            maxtimes -= 1  # 每猜一次次数自减1
            if guess == secret:  # 如果输入的数字等于预设的数字
                print("你猜了{}次,猜对了,真厉害".format(times))
                break
            else:
                if guess < secret:  # 如果输入的数字小于预设的数字
                    print("你猜的数字小于正确答案")
                else:  # 如果输入的数字大于预设的数字
                    print("你猜的数字大于正确答案")
                print("你还有 %d 次机会" % (maxtimes))
            times += 1  # 每猜一次计数自加1

    print("游戏结束")

maxts=eval(input("@请输入猜数字的最大次数:"))
GuessSecret(maxts)		#调用函数

执行效果如下图所示。
在这里插入图片描述
5. 递归法绘制科赫曲线。“科赫曲线绘制”程序(利用强大的搜索能力)逐行输入其中,按自己的思路进行修改并运行效果,体会递归思想。

import turtle

def koch(size, n):   #雪花的大小,及阶数
    if n == 0:
        turtle.fd(size)             #让画笔向前移动size
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)      #逆时针移动角度angel
            koch(size / 3, n - 1)   #递归调用


def main():         #设置一系列参数
    turtle.setup(600, 600)          #设置窗体大小为600,600
    turtle.penup()                  #提起笔移动,但不绘图
    turtle.goto(-200, 100)          #将画笔移动到坐标为-200,100的位置
    turtle.pendown()                #移动时绘制图形
    turtle.pensize(2)               #设置画笔粗细为2
    level = 3                       # 3阶科赫雪花,阶数
    koch(400, level)                #为雪花设置大小及阶数
    turtle.right(120)               #顺时针移动120度
    koch(400, level)                #为雪花设置大小及阶数
    turtle.right(120)               #顺时针移动120度
    koch(400, level)                #为雪花设置大小及阶数
    turtle.hideturtle()             #隐藏画笔的turtle形状


main()

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只爭朝夕不負韶華

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值