我正在尝试编写一个生成随机数字字符串的程序,其长度基于用户输入。我在Sublime Text中编写了它,它与SublimeREPL完美配合,但我把它带入IDLE并试图运行它并且它抛出了无效的语法错误。
import string
import random
# Random Number Password Generator
def digit_password(length):
final = []
while length > 0:
final.append(random.choice(string.digits))
length -= 1
result = ''.join(final)
return result
length = int(raw_input("How long will this password be? "))
print digit_password(length)
当我调用函数时,它总是给我无效的语法错误,特别是“digit_password”名称。它在崇高的文本中工作,但它不会在IDLE中工作。有谁知道为什么会这样?
如果相关,我使用python 3.6.4 shell。
答案 0 :(得分:2)
import string
import random
# Random Number Password Generator
def digit_password(length):
final = []
while length > 0:
final.append(random.choice(string.digits))
length = length - 1 ###should be indented inside while loop
result = ''.join(final)
return result
length = int(input("How long will this password be? "))
print(digit_password(length))
try this because i feel like there's an indentation error length is decremented outside the while loop so the loop keeps running indefinitely.
答案 1 :(得分:1)
打印电话周围没有括号。 Python 3需要将print打造为print(item)
。
将您的最后一行更改为:
print(digit_password(length))
聚苯乙烯。您可能需要缩进回访电话。
答案 2 :(得分:1)
首先你的while循环将无限运行,因为你没有改变循环内部的长度你实际上遇到麻烦的第二个原因是py3打印被修改为print()之后所以它会给你一个无效的语法错误