这个问题是大学软件课作业的一部分。我早就放弃了,但我真的很想学习 python,所以我正在重新审视一些作业。
我创建了一个简单的代码,它将给定的英寸数转换为英尺和英寸。到目前为止,我已经能够让它检查输入是否为整数,并且是正数。最后一步是能够接受来自命令行或控制台的输入。就像标题所说,我如何检查命令行参数,如果不存在,提示通过控制台输入并完成脚本执行?
这是我在此处的帮助下制作的原始代码。
try:
total_inches = int(input('Enter a distance in inches: '))
if total_inches > 0:
INCHES_PER_FOOT = 12
feet = total_inches//INCHES_PER_FOOT
final_inches = total_inches%INCHES_PER_FOOT
print(str(total_inches) + '"', 'is equivalent to', str(feet) + '\'', str(final_inches) + '"')
else:
print('Must be a positive integer. Try again')
except ValueError:
print('Not a number. Try again.')
如您所见,它检查输入并相应地执行。
我在这里和这里做了一些搜索,但还没有找到任何可靠的东西。第一个是关于我知道的 input() 和我还不熟悉的解析。第二个让我看到了这段看起来很笨拙的代码:
from sys import argv
if len(argv) == 1:
try:
total_inches = int(argv[1])
if total_inches > 0:
INCHES_PER_FOOT = 12
feet = total_inches//INCHES_PER_FOOT
final_inches = total_inches%INCHES_PER_FOOT
print(str(total_inches) + '"', 'is equivalent to', str(feet) + '\'', str(final_inches) + '"')
else:
print('Must be positive')
except ValueError:
print('Not a number. Try again.')
else:
try:
total_inches = int(input('Enter a distance in inches: '))
if total_inches > 0:
INCHES_PER_FOOT = 12
feet = total_inches//INCHES_PER_FOOT
final_inches = total_inches%INCHES_PER_FOOT
print(str(total_inches) + '"', 'is equivalent to', str(feet) + '\'', str(final_inches) + '"')
else:
print('Must be positive')
except ValueError:
print('Not a number. Try again.')
当我包含命令行参数时,它仍会提示输入控制台,但否则会正确执行。当我省略命令行参数并尝试执行脚本时,我得到:
D:\Python\2>python p2e3.py
Traceback(最近一次调用最后一次):
文件“D:\Python\2\p2e3.py”,第 5 行,在
total_inches = int(argv[1])
IndexError: list index超出范围
我知道这意味着它缺少一个参数,但我不明白为什么它不跳到 else 语句,或者为什么当有命令行参数时它仍然要求控制台输入。不确定我的缩进是否错误或者我应该使用其他功能,任何帮助将不胜感激。