我正在尝试编写一个要求输入数字然后打印一行的函数。它可以完美地用于单个数字,但是一旦我使用两个数字,我的if / elif语句只能看到第一个数字,而不能同时看到两个数字。
我在python3中创建了一个示例函数并进行了测试。我尝试将str更改为int,也只是将input()更改为无效。
>>> def test():
... out = str(input('Choice: '))
... if out[0] == '1':
... print('Test1 Worked')
... elif out[0] == '2':
... print('Test2 Worked')
... elif out[0] == '10':
... print('Test10 Worked')
...
>>> test()
Choice: 1
Test1 Worked
>>> test()
Choice: 2
Test2 Worked
>>> test()
Choice: 10
Test1 Worked
在上一次运行test()时,我的选择是10,我期望输出为Test 10 Worked,但它说Test1 Worked。
答案 0 :(得分:1)
因为out
是一个字符串,并且您将第一个元素out[0]
用作第一个字符。因此out[0] == '10'[0] == '1'
。
您将不得不执行out[:2] == '10'
,或者因为很容易搞砸,所以最好使用if out.startswith('10')
。如果您知道整个字符串只是一个数字,则可以安全进行out == '10'
。
答案 1 :(得分:1)
您可能要检查out而不是out [0]的值,因为out [0]将检查输入的第一个字符
if vanilla: strawberry or buttercream
if chocolate: mocha, dark chocolate or buttercream.