我的print语句只打印10的倍数,而不打印介于两者之间的倍数

2024-09-29 00:14:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个游戏板,但是如果数字可以被10整除,那么x轴(列)将只打印0-9。你知道吗

我能够得到10的倍数打印(10,20,…等)和数字小于10(0-9)。但是十之间的任何数字都不会在十的最后几倍打印出来。i、 e.x=15张0123456789

import random

def getHSpace(xMax):
    hspace = ' '*3
    if xMax >= 10: # print 10+
        print(hspace + ('0123456789' * int(xMax/10)))#<--is there a 
                                                         better way
    else: # print 0-9
        for i in range(0, int(xMax)):
            hspace+=str(i)
        print(hspace)

getHSpace(15)

它应该打印所有的数字,直到董事会结束。 i、 e.x=15应打印012345678901234


Tags: import游戏ifisdef数字randomint
3条回答

根据这张照片:

print(hspace + ('0123456789' * int(xMax/10)))

当10<;=xMax<;20时,int(xMax/10)将等于1,这就是为什么您的打印显示“0123456789”一次,当您尝试xMax>;=20时,您将得到您想要的。你知道吗

模运算符%在这些情况下很有用—它代表“除法后的余数”。所以,66 % 10 = 6,或73 % 12 = 1,或21 % 7 = 0。你知道吗

在您的特定情况下,可以使用它分别生成一组行标题,然后将它们连接在一起:

def getHSpace(xMax):
    return "   " + ''.join(str(i % 10) for i in range(xMax))

这将为0包含和xMax排除之间的每个数字生成str(i % 10)(即,一个一位数,但作为字符串)。然后,它使用空字符串作为分隔符将它们连接在一起。你知道吗

也可以进行模运算(%)。你知道吗

def getHSpace(xMax):
    hspace = ' '*3
    num='0123456789'
    if xMax >= 10: # print 10+
        print(hspace + (num * int(xMax/10)) + num[:xMax%10])

    else: # print 0-9
        for i in range(0, int(xMax)):
            hspace+=str(i)
        print(hspace)

相关问题 更多 >