猜数字游戏(python,C++), 同一个类中的方法相互调用(两种办法)

  •  # random.randint(a, b),使用randint()函数,我们可以在一个指定的整数范围内生成一个随机整数。在使用该函数时,我们需要指定整数范围的上限和下限。该函数返回一个随机整数,其取值范围是[a,b],即包括a和b本身
  • # input接受一个参数,用于要向用户显示的提示或说明,包括但不限于字符串,整型数字;
  • # python的格式运算符与C,C++的格式运算符相似,但是python的变量前要加一个%,如果有多个变量还需要用圆括号将这几个变量括起来,并在括号前加一个%
  • # python中的逻辑运算符是用 and,or,not来表示的,而不是 &&, ||, ! 来表示

python代码,函数实现:

import random

def start(l, h, num, cnt):
#从[l, h]中猜一个数,你有cnt次机会,num是用户猜测的数字
    
    Random = random.randint(1, (1 << 31) - 1 ) % (h-l) + 1 + l;
# random.randint(a, b)
# 使用randint()函数,我们可以在一个指定的整数范围内生成一个随机整数。在使用该函数时,我们需要指定整数范围的
# 上限和下限。该函数返回一个随机整数,其取值范围是[a,b],即包括a和b本身。

    while(1):
        if(Random > num):
            print("您的数字太小了,请再输入一个数")
            print("您还剩下 %d 次机会\n" %(cnt))
            num = int(input(""))
            # input接受一个参数,用于要向用户显示的提示或说明,包括但不限于字符串,整型数字;

        elif(Random < num):
            print("您的数字太大了,请再输入一个数")
            print("您还剩下 %d 次机会\n" %cnt)
            # python的格式运算符与C,C++的格式运算符相似,但是python的变量前要加一个%,如果有多个
            # 变量还需要用圆括号将这几个变量括起来,并在括号前加一个%
            
            num = int(input(""))
            
        else:
            print("恭喜您猜对了,游戏结束!\n")
            break
            
        cnt -= 1

        if(cnt == 0):
            print("游戏失败!!!欢迎下次见面!\n")
            break


print("欢迎来到游戏王国")
while(1):
    while(1):
        op = input("请选择您的游戏难度:\nsimple or medium or hard")

        if(op == "simple"):
            print("请您在 1~50 中选择一个数:")
            num = int(input(""))
            start(0,50,num,9)

        elif( op == "medium"):
            print("请您在 51~500 中选择一个数:")
            num = int(input(""))
            start(50,500,num,9)

        elif(op == "hard"):
            print("请您在 501~1000 中选择一个数:")
            num = int(input(""))
            start(500,1000,num,9)

        else:
            print("您的选择错误:您只能在 simple or medium or hard 中选择:")

        if op == "simple" or op == "medium" or op == "hard" :
            break
        # python中的逻辑运算符是用 and,or,not来表示的,而不是 &&, ||, ! 来表示

    print("您是不是觉得这个游戏太有趣了!您还想继续玩这个游戏吗?")
    str = input("请您输入yes or no :")
    if(str == "yes" or str == "YES" or str == "Yes" or str == "YEs"):
        print("好的,咱们继续:\n")
    else:
        print("好的,很期待与您的下一次见面,祝您生活愉快!!!\n")
        break

python代码,将函数封装在一个类中实现:

# 同一个类中的方法相互调用,一是可以用 self.方法名()  
# 同一个类中的方法相互调用,二是可以用 类名.方法名()(一定要加self)
# 同一个类中的方法相互调用,一是可以用 类名.方法名(self, ) 

 # 当用类名.方法名时,加不加self参数都可 [,经实践检验,此为错误,使用类名.方法名时,一定要加self参数,否则会报错]

# 类实现:
import random
# 引进random模块
 
class NumGame:
    def __init__(self, name, id):
        self.name = name
        self.id = id
    """为该数字游戏类增添两个属性,姓名以及id号"""
# 这种用三双引号注释的文字,千万要注意,当在类或者函数里面注释的时候,一定要保证注释要与其他代码的空格保持一致,否则
# 如果你用三双引号注释的文字顶格写,就会造成后面还在类里面或者函数里面的代码编译错误;

    def start(self, l, h, num, cnt):
    #从[l, h]中猜一个数,你有cnt次机会,num是用户猜测的数字
 
        Random = random.randint(1, (1 << 31) - 1 ) % (h-l) + 1 + l
    # random.randint(a, b)
    # 使用randint()函数,我们可以在一个指定的整数范围内生成一个随机整数。在使用该函数时,我们需要指定整数范围的
    # 上限和下限。该函数返回一个随机整数,其取值范围是[a,b],即包括a和b本身。
 
        while(1):
            if(Random > num):
                print(f"{self.name} 您的数字太小了,请再输入一个数")
                print(f"{self.name} 您还剩下 %d 次机会\n" %(cnt))
                num = int(input(""))
                # input接受一个参数,用于要向用户显示的提示或说明,包括但不限于字符串,整型数字;
 
            elif(Random < num):
                print(f"{self.name} 您的数字太大了,请再输入一个数")
                print(f"{self.name} 您还剩下 %d 次机会\n" %cnt)
                # python的格式运算符与C,C++的格式运算符相似,但是python的变量前要加一个%,如果有多个
                # 变量还需要用圆括号将这几个变量括起来,并在括号前加一个%
 
                num = int(input(""))
 
            else:
                print("恭喜您猜对了,游戏结束!\n")
                break
 
            cnt -= 1
 
            if(cnt == 0):
                print("游戏失败!!!欢迎下次见面!\n")
                break
 
    def start_game(self):
        print(f"{self.name} 欢迎来到游戏王国")
        while(1):
            while(1):
                op = input("请选择您的游戏难度:\nsimple or medium or hard")
 
                if(op == "simple"):
                    print("请您在 1~50 中选择一个数:")
                    num = int(input(""))
                    self.start(0,50,num,9)
# 同一个类中的方法相互调用,一是可以用 self.方法名()  
 
                elif( op == "medium"):
                    print("请您在 51~500 中选择一个数:")
                    num = int(input(""))
                    NumGame.start(self, 50,500,num,9)
# 同一个类中的方法相互调用,二是可以用 类名.方法名()
 
                elif(op == "hard"):
                    print("请您在 501~1000 中选择一个数:")
                    num = int(input(""))
                    NumGame.start(self, 500,1000,num,9)
# 同一个类中的方法相互调用,一是可以用 类名.方法名(self, ) 
# 当用类名.方法名时,加不加self参数都可 [,经实践检验,此为错误,使用类名.方法名时,一定要加self参数,否则会报错]
                    
                else:
                    print("您的选择错误:您只能在 simple or medium or hard 中选择:")
 
                if op == "simple" or op == "medium" or op == "hard" :
                    break
                # python中的逻辑运算符是用 and,or,not来表示的,而不是 &&, ||, ! 来表示
 
            print("您是不是觉得这个游戏太有趣了!您还想继续玩这个游戏吗?")
            str = input("请您输入yes or no :")
            if(str == "yes" or str == "YES" or str == "Yes" or str == "YEs"):
                print("好的,咱们继续:\n")
            else:
                print("好的,很期待与您的下一次见面,祝您生活愉快!!!\n")
                break
                
ming = NumGame("小明", "10086")
ming.start_game()

C++代码:

#include <iostream>
#include <stdlib.h>
#include <ctime>

using namespace std;

void start(int l,int h,int num,int cnt)
{
    srand((unsigned) time(NULL));
    int Random = rand() % (h-l) + 1 + l;

    while(1)
    {
        if(Random > num)
        {
            puts("您的数字太小了,请再输入一个数");
            printf("您还剩下 %d 次机会\n",cnt);
            cin >> num;
        }
        else if(Random < num)
        {
            puts("您的数字太大了,请再输入一个数");
            printf("您还剩下 %d 次机会\n",cnt);
            cin >> num;
        }
        else
        {
            puts("恭喜您猜对了,游戏结束!\n");
            break;
        }
        --cnt;

        if(cnt == 0)
        {
            puts("游戏失败!!!欢迎下次见面!\n");
            break;
        }
    }
}

int main()
{
    puts("欢迎来到游戏王国");
    string op;
    while(1)
    {
        do
        {
            puts("请选择您的游戏难度:\nsimple or medium or hard");
            cin >> op;
            int num;
            if(op == "simple")
            {
                puts("请您在 1~50 中选择一个数:");
                cin >> num;
                start(0,50,num,9);
            }
            else if( op == "medium")
            {
                puts("请您在 51~500 中选择一个数:");
                cin >> num;
                start(50,500,num,9);
            }
            else if(op == "hard")
            {
                puts("请您在 501~1000 中选择一个数:");
                cin >> num;
                start(500,1000,num,9);
            }
            else
                puts("您的选择错误:您只能在 simple or medium or hard 中选择:");
        }while(op != "simple" && op != "medium" && op != "hard");

        string str;
        puts("您是不是觉得这个游戏太有趣了!您还想继续玩这个游戏吗?");
        puts("请您输入yes or no :");
        cin >> str;
        if(str == "yes" || str == "YES" || str == "Yes" || str == "YEs")
            puts("好的,咱们继续:\n");
        else
        {
            puts("好的,很期待与您的下一次见面,祝您生活愉快!!!\n");
            break;
        }
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值