我是python的初学者,试图制作一个“死辊”,您可以在其中选择死角的大小,它会在我的代码的第20行返回此错误
import sys
import random
import getopt
def main(argv):
dsize = ''
try:
opts, args = getopt.getopt(argv, "hi:o:", ["dsize="])
except getopt.GetoptError:
print("Roll.py -d <dsize>")
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('Roll.py -d <dsize>')
sys.exit()
# elif opt in ("-d", "--dsize"):
# dsize = arg
print('Die size is ', dsize)
print('roll is: '(random.randrange(1, dsize)))
if __name__ == "__main__":
main(sys.argv[1:])
如果我取消对“ elif opt in”和“ dsize”的注释,我也会得到这个
File "h:\Projects\Roll.py", line 17
elif opt in ("-d", "--dsize"):
^
SyntaxError: invalid syntax
答案 0 :(得分:0)
错误可能在此行上:
print('roll is: '(random.randrange(1, dsize)))
您正在尝试连接字符串和整数。有两种选择:
print('roll is: ', random.randrange(1, dsize))
或
print('roll is: ' + str(random.randrange(1, dsize)))
答案 1 :(得分:0)
或更改:
print('roll is: '(random.randrange(1, dsize)))
收件人:
print('roll is: {}'.format(random.randrange(1, dsize)))
或者:
print('roll is: %s'%random.randrange(1, dsize))
或者新的f字符串(仅适用于python版本> 3.6):
print(f'roll is: {random.randrange(1, dsize)}')
完整代码:
import sys
import random
import getopt
def main(argv):
dsize = ''
try:
opts, args = getopt.getopt(argv, "hi:o:", ["dsize="])
except getopt.GetoptError:
print("Roll.py -d <dsize>")
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('Roll.py -d <dsize>')
sys.exit()
# elif opt in ("-d", "--dsize"):
# dsize = arg
print('Die size is ', dsize)
print('roll is: {}'.format(random.randrange(1, dsize))) # here i just use the first option
if __name__ == "__main__":
main(sys.argv[1:])
答案 2 :(得分:0)
语法错误似乎是由您的elif
行的缩进级别引起的。条件语句的格式应为:
if opt == '-h':
print('Roll.py -d <dsize>')
sys.exit()
elif opt in ("-d", "--dsize"):
dsize = arg
这是一个链接,其中包含python中的条件语句示例:Flow Control in Python
答案 3 :(得分:-1)
我用Tkinter做这个:
import tkinter as tk
master=tk.Tk()
root=master
tk.Label(master, text = "How many sides?").grid(row=0)
e1=tk.Entry(root)
e1.grid(row=0, column= 150)
def Get():
import random
varY=int(e1.get())
if varY<= 0:
print('Impossible')
else:
varX=random.randint(1,varY)
print(varX)
tk.Label(master, text=varX).grid(row=2)
button = tk.Button(master, text = "Submit", command = Get)
button.grid(row=100, column=150)
不是最好的,但是对于多卷来说很好。