因此,我尝试使用sys.argv
的值来获取input
要打印的字体。但是无论我在终端中键入多少个值,sys.argv的值都保持为1
。
第一个if
工作得很好,但是代码永远不会到达elif
部分,即使我输入filename.py value1 value2
下面是我的代码:
import pyfiglet
import sys
import random
from pyfiglet import Figlet
figlet = Figlet()
#for fonts
fonts_chosen = figlet.getFonts()
font_ = (random.choice(["3-d", "3x5", "5lineoblique", "acrobatic"]))
if len(sys.argv) == 1 :
str = input("Input: ")
figlet.setFont(font=font_)
print(figlet.renderText(str))
elif len(sys.argv) == 3 :
if sys.argv[1] == "-f" or sys.argv[1] == "--font":
if sys.argv[2] == fonts_chosen:
str = input("Input: ")
figlet.setFont(font=sys.argv[2])
print(figlet.renderText(str))
else:
sys.exit("Invalid usage")
else:
sys.exit("Invalid usage")
else:
sys.exit("Invalid usage")
1条答案
按热度按时间gr8qqesn1#
你的代码有逻辑缺陷。在
if sys.argv[2] == fonts_chosen
中,您将输入参数与在fonts_chosen = figlet.getFonts()
中声明的整个列表进行比较(考虑到您没有在参数中提供该大列表)。我们可以用if sys.argv[2] in fonts_chosen
更新它,这样我们的参数将被检查是否属于该字体列表。下面是更新后的代码,您不需要两个参数,因为一个就足够了。此外,在随机选择时,您可以提供
fonts_chosen
列表,以从列表中随机选择字体,而不是您提供的4个字体。