0

因此,我正在尝试制作一个供个人使用的 Reddit 机器人,作为一个学习项目,但我在为输入添加错误异常时遇到了麻烦。

这是整个源代码: http: //pastebin.com/DYiun1ux

这里唯一有问题的部分是

 while True:
 if type(thing_limit) == int:
     print("That is a number, thanks.")
     break
 elif type(thing_limit) == float:
     print("You need a whole number.")
     sys.exit()
 elif type(thing_limit) == str:
     print("You need a whole number.")
     sys.exit()
 else:
     print("That is a number, thanks.")
     break

我不确定如何确保我输入的用户名有效。谢谢!

4

3 回答 3

6

input总是返回一个字符串。您最好的选择是尝试将结果转换为整数。

try:
    thing_limit = int(thing_limit)
except ValueError:
    print("You need a whole number.")
    sys.exit()
else:
    print("That is a number, thanks.")
于 2015-11-09T02:49:05.513 回答
0

python 中的每个输入都将被读取为字符串,因此检查类型将始终返回一个字符串。如果要检查输入的有效性,请声明一个字符串,例如

charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_"

然后遍历您的字符串以查看该字母是否在字符集中。如果不是,则输入无效。还要确保输入不超过 20 个字符。

于 2015-11-09T02:45:50.127 回答
0

reddit 源代码有效用户名定义为至少 3 个字符、不超过 20 个字符并匹配正则表达式的用户名\A[\w-]+\Z

于 2015-11-24T23:53:44.700 回答