Python - Simple While loop with IF statements
我正在尝试制作一个脚本来检查是否输入了参数。 如果输入了一个参数,它将使用该数字作为计时器,如果没有输入参数,则默认情况下,计时器应该等于3。
这个while循环将从给定的数字& 在倒计时时打印每个值。 当它到达终点时它会输出'爆炸!'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/env python3 import sys timer = int(sys.argv[1]) while timer != 0: if len(sys.argv[1]) == 0: timer = 3 elif len(sys.argv[1]) == int(sys.argv[1]): timer = int(sys.argv[1]) print (timer) timer = timer - 1 print ('blast off!') |
我的作业检查脚本给了我一个IndexError错误:列表索引超出范围 - 与第一个timer = int(sys.argv [1])相关
我不确定我应该"将空字符串转换为整数"
谢谢
检查你确实有一个参数:
1 | timer = int(sys.argv[1]) if len(sys.argv) >= 2 else 3 |
我猜你的脚本是在没有参数的情况下调用的,因为
如果用户未指定值,则将计时器设置为任何值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import sys ################## if len(sys.argv) > 1: timer = int(sys.argv[1]) else: timer = 0 ################## while timer != 0: if len(sys.argv[1]) == 0: timer = 3 elif len(sys.argv[1]) == int(sys.argv[1]): timer = int(sys.argv[1]) print (timer) timer = timer - 1 print ('blast off!') |
甚至更好:
1 2 3 4 | try: timer = int(sys.argv[1]) except: timer = 0 |
您试图索引列表中不存在的位置并获得IndexError:list索引超出范围。
让我们调用你的文件
当您运行
如果你运行
建议查看argparse库,因为这是从命令行解析参数的pythonic方法。
例如,您的代码如下所示:
#!/ usr / bin / env python3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import argparse def countdown(timer): [print(tick) for tick in reversed(range(1, timer+1))] print('blast off!') if __name__ == '__main__': parser = argparse.ArgumentParser(description='Countdown to blast off!') parser.add_argument('timer', type=int, nargs='?', default=3) args = parser.parse_args() countdown(args.timer) |