Python "Invalid Syntax" 在 IDLE 中调用函数时出错
Python "Invalid Syntax" error while calling a function in IDLE
我正在尝试编写一个生成随机数字字符串的程序,其长度基于用户输入。我用 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" 名称。它在 sublime text 中工作,但在 IDLE 中不起作用。有谁知道为什么会这样?
如果相关,我正在使用 python 3.6.4 shell。
打印调用没有括号。 Python 3 需要 print 构造为 print(item)
.
将最后一行更改为:
print(digit_password(length))
Ps。您可能需要缩进 return 调用。
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.
首先,你的 while 循环将 运行 无限,因为你没有改变循环内的长度,第二个你实际遇到麻烦的原因是,在 py3 print 被修改为 print() 之后,它会给你一个无效的语法错误。
我正在尝试编写一个生成随机数字字符串的程序,其长度基于用户输入。我用 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" 名称。它在 sublime text 中工作,但在 IDLE 中不起作用。有谁知道为什么会这样?
如果相关,我正在使用 python 3.6.4 shell。
打印调用没有括号。 Python 3 需要 print 构造为 print(item)
.
将最后一行更改为:
print(digit_password(length))
Ps。您可能需要缩进 return 调用。
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.
首先,你的 while 循环将 运行 无限,因为你没有改变循环内的长度,第二个你实际遇到麻烦的原因是,在 py3 print 被修改为 print() 之后,它会给你一个无效的语法错误。