社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

为什么在python 3.7.2中,if语句中带有数字的“if语句”不起作用、不运行并且只在语句之后停止?

DavidR06 • 5 年前 • 1408 次点击  

我尝试过改变变量,但不管我尝试什么,似乎都是if语句引起的问题。

    rolls = 2
    critrolls = 4
    FDMG = 6
    DMG = 0
    Tohit = random.randrange(12, 32)
            if Tohit == "31":
                while str(critrolls) > str(0):
                    DMG = random.randrange(1, 9)
                    FDMG = FDMG + DMG
                    rolls = int(critrolls) - 1
                print("Your to hit is", Tohit)
                print("Your Damage is", FDMG)
            elif Tohit <= 30:
                while str(rolls) > str(0):
                    DMG = random.randrange(1, 9)
                    FDMG = FDMG + DMG
                    rolls = int(rolls) - 1
                print("Your to hit is", Tohit)
                print("Your Damage is", FDMG)

我希望它能够基于Tohit变量中的数字来控制掷骰子的数量。这个想法是在31次掷骰子时,它将掷4次骰子而不是2次。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54204
 
1408 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Devesh Kumar Singh
Reply   •   1 楼
Devesh Kumar Singh    6 年前

Tohit = random.randrange(12, 32) 分配 Tohit 为整数,但在 if Tohit == "31": Tohit==31 代码应该可以工作:)

此外,您还需要更改 while str(rolls) > str(0): while rolls > 0 while str(critrolls) > str(0) while critrools > 0

还有你的 而critrools>0 是一个无限循环,因为 critrolls = 2 2>0 会导致无限循环,因为你永远不会改变 critrolls 值,您需要在循环中更新该值,或者 critrolls = critrolls - 1

import random
rolls = 2
critrolls = 4
FDMG = 6
DMG = 0
Tohit = random.randrange(12, 32)

#Change to int to int comparison
if Tohit == 31:
    # Change to int to int comparison
    while critrolls > 0:
        DMG = random.randrange(1, 9)
        FDMG = FDMG + DMG
        #Perhaps you need to decrement critrolls here to break infinite loop
        # Change to int to int operation by removing int typecast
        critrolls -= 1
    print("Your to hit is", Tohit)
    print("Your Damage is", FDMG)
elif Tohit <= 30:
    # Change to int to int comparison
     while rolls > 0:
        DMG = random.randrange(1, 9)
        FDMG = FDMG + DMG
        # Change to int to int operation by removing int typecast
        rolls -= 1
     print("Your to hit is", Tohit)
     print("Your Damage is", FDMG)