-2
这是我的program的代码片段,其中当输入要求的值时,增加该变量的值,并在按下键q
后退出循环来打印结果。请注意,我的代码通过从用户sys
导入argv
的参数(这就是为什么我的名字在命令行中)。compare int with char
prompt = "# "
come_out = True
one = 0
two = 0
three = 0
four = 0
answer = 0
while (come_out == True):
print """
Enter q to exit()
> Do you like Got?
> What about LoTR?
> Okay, Fargo?
> Alright, last choice: American Gods?
"""
answer = raw_input(prompt)
if answer == 1:
one = one + 1
elif answer == 2:
two = two + 1
elif answer == 3:
three = three + 1
elif answer == 4:
four = four + 1
elif answer == ord('q'):
come_out = False
else:
print "Not applicable ~~~ exiting"
come_out = False
当我被命令执行脚本:
$ python ex14.py Sambhav-Jain
它不给任何错误,但作为假设不工作,因为它必须通过的循环,直至跑一路用户明确按下键q
退出,但:
Hi, Sambhav-Jain. Welcome to your ex14.py script.
Enter q to exit()
> Do you like Got?
> What about LoTR?
> Okay, Fargo?
> Alright, last choice: American Gods?
# 1
Not applicable ~~~ exiting
GoT Lovers: 0
LoTR Lovers: 0
Fargo Lovers: 0
American God Lovers: 0
然后我在网上搜索,发现了一种显式转换answer
变量int
即:
answer = int(raw_input(prompt))
通过这样做,并执行我用以前的版本相同的命令,它会产生一个错误:
Hi, Sambhav-Jain. Welcome to your ex14.py script.
Enter q to exit()
> Do you like Got?
> What about LoTR?
> Okay, Fargo?
> Alright, last choice: American Gods?
# 1
Enter q to exit()
> Do you like Got?
> What about LoTR?
> Okay, Fargo?
> Alright, last choice: American Gods?
# q
Traceback (most recent call last):
File "ex14.py", line 26, in <module>
answer = int(raw_input(prompt))
ValueError: invalid literal for int() with base 10: 'q'
PS:请不要将此标记为重复。
你可以做的快速改变是要求-1而不是q。这样,所有输入类型都是相同的。 – Antimony
请遵循以下指导原则:https://stackoverflow.com/help/mcve – klutt