Py学习  »  Python

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

DavidR06 • 5 年前 • 1381 次点击  

我尝试过改变变量,但不管我尝试什么,似乎都是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
 
1381 次点击  
文章 [ 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)