鱼C论坛

 找回密码
 立即注册
查看: 993|回复: 5

[已解决]写了一个比大小,但是结果总输,求助!!!!

[复制链接]
发表于 2018-7-3 21:34:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写了一个比大小,但是结果总输,求助!!!!

import random
def roll_dice(numbers=3,points=None):
    print('<<<<< 摇色子!<<<<<')
    if points is None:
        points = []
    while numbers > 0:
        point = random.randrange(1,7)
        points.append(point)
        numbers = numbers - 1
    return points

def roll_result(total):
    isbig = 11 <= total <=18
    issmall = 3 <= total <=10
    if isbig:
        return "大!"
    elif issmall:
        return '小!'

def start_game():
    your_money=1000
    print('你有1000筹码,筹码为0时,游戏结束')
    while your_money >0:
        print('<<<<< GAME STARTS!<<<<<')
        choices = ['大','小']
        your_choice = input('大或小:')
                           
        if your_choice in choices:
            your_bet = int(input('你想下多少注?'))
                          
            your_rate= int(input('请输入赔率?'))
            
            points = roll_dice()
            total = sum(points)
            youwin = your_choice == roll_result(total)
            if youwin:
                    print('点数是:',points, total, roll_result(total), '你赢了!')
                    print('你赢了{},你还有{}'.format(your_bet*your_rate,your_money + your_bet*your_rate))
                    your_money = your_money + your_bet*your_rate
            else:
                    print('点数是:',points, total, roll_result(total), '你输了!')
                    print('你输了{},你还有{}'.format(your_bet*your_rate,your_money - your_bet*your_rate))
                    your_money = your_money - your_bet*your_rate

        else:
            print('必须输入大或小')
            start_game()
    else:
        print('GAME OVER!')

start_game()
最佳答案
2018-7-4 08:14:37
拉了盏灯 发表于 2018-7-3 21:58
卤煮,你roll__result里返回的的大小后面有感叹号,删掉就好了

因为 youwin = your_choice == roll_result(total)里的roll_result(total)的返回值是(大!)或者(小!)而your_choice的输入值是(大)或者(小)所以your_choice永远不会=roll_result(total),也就是说youwin永远是是假,所以永远不会执行if youwin:的真值,而是执行else里边的语句了,这就是总是输的原因。像前边几个大能说的把  return "大!"return '小!'里边的!去掉是最好的改法。

另外
else:
            print('必须输入大或小')
            start_game()
这句貌似有问题,如果我不输入大或者小,它告诉我必须输入大小,然后调用start_game()函数,这样也导致了就是我最后输光了,游戏也不会结束,接着让我输入大小,直到我调用的start_ganme()函数次数结束,才能结束,也就是说我输入错几次,他的额外调用了几次start_ganme()函数,我就得输光了也的多玩几次才能结束游戏。所以你可以吧直接把start_game()这句去掉,里边流程 print('<<<<< GAME STARTS!<<<<<'),如果你感觉不满意可以调节一下,调到your_money=1000后。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-3 21:43:50 | 显示全部楼层
youwin = your_choice == roll_result(total)

==变=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-3 21:49:08 | 显示全部楼层
  1.     if isbig:
  2.         return "大!"
  3.     elif issmall:
  4.         return '小!'
复制代码

改为
  1.     if isbig:
  2.         return "大"
  3.     elif issmall:
  4.         return '小'
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-3 21:58:47 | 显示全部楼层
卤煮,你roll__result里返回的的大小后面有感叹号,删掉就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-4 08:14:37 | 显示全部楼层    本楼为最佳答案   
拉了盏灯 发表于 2018-7-3 21:58
卤煮,你roll__result里返回的的大小后面有感叹号,删掉就好了

因为 youwin = your_choice == roll_result(total)里的roll_result(total)的返回值是(大!)或者(小!)而your_choice的输入值是(大)或者(小)所以your_choice永远不会=roll_result(total),也就是说youwin永远是是假,所以永远不会执行if youwin:的真值,而是执行else里边的语句了,这就是总是输的原因。像前边几个大能说的把  return "大!"return '小!'里边的!去掉是最好的改法。

另外
else:
            print('必须输入大或小')
            start_game()
这句貌似有问题,如果我不输入大或者小,它告诉我必须输入大小,然后调用start_game()函数,这样也导致了就是我最后输光了,游戏也不会结束,接着让我输入大小,直到我调用的start_ganme()函数次数结束,才能结束,也就是说我输入错几次,他的额外调用了几次start_ganme()函数,我就得输光了也的多玩几次才能结束游戏。所以你可以吧直接把start_game()这句去掉,里边流程 print('<<<<< GAME STARTS!<<<<<'),如果你感觉不满意可以调节一下,调到your_money=1000后。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-4 12:18:08 From FishC Mobile | 显示全部楼层
谢谢大家给我指点!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 20:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表