初学者遇到 ValueError

问题描述 投票:0回答:5

我是一个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
python string random getopt valueerror
5个回答
0
投票

错误可能就在这一行:

print('roll is: '(random.randrange(1, dsize)))

您正在尝试连接一个字符串和一个整数。有两种选择:

print('roll is: ', random.randrange(1, dsize))

或者

print('roll is: ' + str(random.randrange(1, dsize)))

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:])

0
投票

语法错误似乎是由

elif
行的缩进级别引起的。条件语句的格式应如下所示:

if opt == '-h':
    print('Roll.py -d <dsize>')
    sys.exit()
elif opt in ("-d", "--dsize"):
    dsize = arg

这里有一个链接,其中包含 python 中的条件语句的一些示例:Python 中的流程控制


0
投票

第 8 行,由于缩进不正确而出现错误。

try:
    opts, args = getopt.getopt(argv, "hd:", ["dsize="])
except getopt.GetoptError:
    print("Roll.py -d <dsize>")
    sys.exit(2)

-2
投票

问题是因为您正在尝试查找与您想要查找的类型不同的元素。一个例子是尝试在现有字符串类型中查找 int 类型。

解决方案是将你的 int 转换为字符串。

© www.soinside.com 2019 - 2024. All rights reserved.