为什么我似乎不能混合使用 argv 和 randint?

问题描述

所以我的猜谜游戏可以正常运行,无论输入如何它都不会中断。我知道我可以在输入上使用 int 函数,但是如果用户决定输入除整数以外的任何内容,您会收到运行时错误,所以我做了不同的工作,直到我决定允许用户添加 CLI 参数来定义整数生成的值范围如下所示,但它不起作用...

from sys import argv
import random
lower,upper = argv
lower = int(lower)
upper = int(upper)
secret_number = random.randint(lower,upper)

输出

Traceback (most recent call last):
  File "guess.py",line 3,in <module>
    lower,upper = argv
ValueError: too many values to unpack (expected 2)

我用 python guess.py 1 100

这是工作版本

import random
secret_number = random.randint(1,100) #assigns a random integer to secret_number
count = int(0) #starts the guess counter at 0
#print(f"the secret number is: {secret_number}")
print("Try and guess the number between 1-100")
number = input("please enter your guess: ")
while number != secret_number:
    try:
        count += 1  #same as count = count + 1
        number = int(number)
    except:
        print(f"you entered: {number}")
        number = input("please enter an integer only!: ")
    else:
        if number < secret_number:
            print(f"you entered: {number}")
            number = input("To Small! try again: ")
        elif number > secret_number:
            print(f"you entered: {number}")
            number = input("To big! try again: ")

print(f"you entered: {number}")
print("You Win! Congratulations!")
print(f"You took a total of {count} attempts to guess the number!")

解决方法

通常argv的第一个参数是脚本的名字,所以你要:

lower,upper = argv[1:]

https://docs.python.org/3/library/sys.html