练习:猜正整数(二次练习,重写代码)

156 篇文章 3 订阅

重写“猜正整数”练习代码


☆程序调试环境☆
python 3.6.6 安卓版(手机)

“知识点”

  1. def def_name(): 自定义函数
  2. 格式化字符串在print()和input中的使用

技巧: Do more


  学过自定义函数,发现用多个函数代码块,完成主程序的任务,也是一个好玩儿的事情。所以,全部重用自定义函数def()写了前面的猜正整数练习代码。

  练习多了,不但可以😄熟练方法的使用,还可以发现一些有意思的用法。比如字符串在input()和print()中的格式化用法。练得多了,就可以胜得随心所欲,可以这么写也可以那样码。😉😉
def input_my(s):
    while True:
        print("\n"*3)
        number = input("%20s"%s)
        if number.isdigit()==True:
            return int(number)
        else: 
          s_no = "您的输入“%s”,"
          print("\n"*3+" "*14+s_no%number)
          s_no = "不是正整数!"
          print("\n%20s"%s_no)
          s_no = "请您重新输入。"
          print("\n\n%21s"%s_no) 

s = "\n\n\n    请从({0}~{1})中猜一个正整数:"
    if start==stop-1:
        s = "\n\n\n    您要猜的数字是{0}或者{1}!"
    elif start==stop:
        s = "\n\n\n    您要猜的数字是{0}!"
    guess_number = input_my(s.format(start,stop))

My完整python代码

#! /usr/bin/env python
# coding: utf-8

import random #加载随机数模块

def print_s(s,n):
    """
    函数说明
    提示文字打印
    s为要打印字条串,
    n为每行前面的空格数。
    """
    print("\n"*2)
    for i in s:
        if i!="\n": print(i,end="") #用end=""控制打印不换行
        else: print(i*2+" "*n,end="")

def wait():
    """
    函数说明
    打印暂停提示并暂停程序运行,
    等待用户键入任意键继续。
    """
    print("\n"*2)
    s = "按任意键继续……"
    input("%20s"%s) #用点位符格式打印字符串

def input_my(s):
    """
    函数说明
    接收用户输入。
    s为输入提示字符串
    """
    while True:
        print("\n"*3)
        number = input("%20s"%s)
        if number.isdigit()==True:
            return int(number)
        else: #输入的字符串不是整数,打印提示并循环输入
          s_no = "您的输入“%s”,"
          print("\n"*3+" "*14+s_no%number)
          s_no = "不是正整数!"
          print("\n%20s"%s_no)
          s_no = "请您重新输入。"
          print("\n\n%21s"%s_no) 

def print_tip():
    """
    函数说明,打印不在输入区间的提示
    """
    s = """
    您的输入不在给定区间,
    请输入给定区间的正整数。
    """
    print_s(s,6)


#【main】
#游戏说明
s = """
猜数字:
    你从0~1000的正整数中指定区间,
    系统随机生出一个数,由您来猜。
    起始分数150,每猜错一次扣10分。
    你能得100分么?
"""
#调用函数打印游戏说明
print_s(s,4)
#调用暂停函数
wait()

#调用函数接收用户输入游戏区间,不在限定范围,重新循环输入
while True:
    start = input_my("请输入区间下限(0~999):")
    if start in range(0,1000): break
    print_tip() #输入不在区间,调用函数打印提示
while True:
    stop = input_my("请输入区间上限(1~1000):")
    if stop in range(1,1001): break
    print_tip() #调用函数打印输入不在区间提示

#判断上下限是否相等或者颠倒,打印提示并合理化处理
if start>stop:
    start,stop = stop,start
    s = """
    您选择的区间下限,
    大于区间上限,
    已为您调换。
    
    """
    print_s(s,10) #调用字符串打印函数
    wait() #调用暂停函数
elif start==stop:
    stop = 1000
    s = """
    您选择的区间上下限,
    是同一个正整数。
    已为您将上限设为1000。
    
    """
    print_s(s,8) #打印字符串打印函数
    wait() #调用暂停函数
     
#调用随机数函数生成给定区间随机正整数
random_number = random.randint(start,stop)
i = 1
score = 150
while True:
    s = "\n\n\n    请从({0}~{1})中猜一个正整数:"
    #判查用户选定区间,如是特定区间,给出特定输入提示
    if start==stop-1:
        s = "\n\n\n    您要猜的数字是{0}或者{1}!"
    elif start==stop:
        s = "\n\n\n    您要猜的数字是{0}!"
    guess_number = input_my(s.format(start,stop))
    if guess_number not in range(start,stop+1):
        print_tip()
        continue
    if guess_number==random_number: break
    elif guess_number>random_number:
        #猜大了,猜数区间上限重新设置
        stop = guess_number-1
        i += 1
        score -= 10
        s = """
        您猜大了!
        """
        print_s(s,8)
    elif guess_number<random_number:
        #猜小了,猜数区间下限重新设置
        start = guess_number+1
        i += 1
        score -= 10
        s = """
        您猜小了!
        """
        print_s(s,8)
#打印游戏结束语
if i==1:
    s = """
    您的得分:%4d
    您真厉害👍!
    一次就猜中了。
    """
    print_s(s%score,8)
elif i==2 or i==3:
    s = """
    您的得分:{0}
    您真能干😎! {1}次就猜中了。
    
    """
    print_s(s.format(score,i),4)
elif i>3 and i<7:
    s = """
    您的得分:{0}
    您要加油哦💪。 {1} 次才猜中。
    
    """
    print_s(s.format(score,i),4)
elif i>7:
    s = """
    您的得分:{0}
    您真不行吔🙄。用了{1}次才猜中了。
    
    """
    print_s(s.format(score,i),4)

#【The end of main】

代码运行

在这里插入图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦幻精灵_cq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值