【问题标题】:I want to make a random numbers and letters generator, but this will not work我想制作一个随机数字和字母生成器,但这不起作用
【发布时间】:2021-02-21 22:17:19
【问题描述】:
import random, string, pyautogui, time
numbers=random.randint(1000000000, 1000000000000)
def random_char(y):
       return ''.join(random.choice(string.ascii_letters) for x in range(y))

time.sleep(2)
pyautogui.typewrite(random_char(10))
time.sleep(0.5)
pyautogui.write(numbers)

输出 = piTPLlrXPn (

但数字不起作用

错误:

Exception has occurred: TypeError
'int' object is not iterable
  File "C:\Users\Noah\Pictures\Python\test.py", line 9, in <module>
    pyautogui.write(numbers)

编辑:现在工作!感谢您的帮助!

【问题讨论】:

  • 名称numbers 暗示它应该是一个列表,但random.randint 返回一个整数。另外,你确定不想要random.randrange
  • 看来pyautogui.write(numbers) 需要一个可迭代的。您可以将数字转换为字符串。
  • 您真的想要一个随机数,还是想要一个完全由数字组成的 10 个字符的字符串?
  • Ints 是不可迭代的,但是字符串是可迭代的,所以如果你将你的 int(在这种情况下是变量命名的数字)转换为字符串,你应该能够得到你想要的
  • 如果需要,请将最后一行的 numbers 替换为 str(numbers)

标签: python ascii pyautogui


【解决方案1】:

pyautogui.write() 需要一个可迭代的对象,整数是不可迭代的,但字符串是这样的,在这种情况下你只需要调用,

pyautogui.write(str(numbers))

这应该写出你在代码开始时得到的随机数。

但是,您可以执行类似于使用 ascii 字符执行的操作,给出 int 字符列表,或者如果您想要包含字母和数字的结果,您可以使用数字扩展 ascii 字符列表

【讨论】:

    【解决方案2】:

    整数的范围有限,您输入的范围非常大且超出范围。尝试更小的值,例如 1000,10000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2014-01-20
      相关资源
      最近更新 更多