首页 > 解决方案 > 生成两个字符域名 az 0-9 时使用运算符时遇到问题

问题描述

如果可能的话,我想就我在回答这个问题上所缺少的内容获得建议。

预期的输出是 aa,ab,ac,...a8,a9,一直到 zz,z1,...,z8,z9 它到达 a8,a9 然后为第一个内部循环拉取错误

这是我的计算机科学课。我得到了一个生成 aa、ab、ac、... zy、zz 的代码。我需要在第二个字符的“z”之后添加 0-9,并且在使用 str 和 int 运算符时遇到了麻烦:

print('Two-letter domain names:')

letter1 = 'a'
letter2 = '?'
while letter1 <= 'z':  # Outer loop
    letter2 = 'a'
    while letter2 <= 'z':  # Inner loop | TypeError: '<=' not supported between instances of 'int' and 'str'
        print('{}{}.com'.format(letter1, letter2))
        letter2 = chr(ord(letter2) + 1)
        while letter2 == '{':     # My bit
            letter2 = 0
            for letter2 in range(10):
                print('{}{}.com'.format(letter1, letter2))
                letter2 = letter2 + 1
    letter1 = chr(ord(letter1) + 1)
letter2 = chr(ord(letter2) + 1)# TypeError: ord() expected string of length 1, but int found
letter2 = chr((letter2) + 1)# Infinite loop
letter2 = chr(letter2) + 1# TypeError: can only concatenate str (not "int") to str | makes it to a0
                if letter2 == '9':
                    letter2 = chr(letter2)# Does nothing

我在这上面花了几个小时,经过搜索,只找到了类似 TypeError 的答案,说要在输入中添加“int()”,但我自己没有运气。

标签: pythonpython-3.x

解决方案


我之前也遇到过同样的问题,要解决这个问题,请添加一对额外的括号。像这样:letter2 = chr(**(**ord(letter2)**)** + 1)


推荐阅读