此代码行中的[0]是什么意思?

时间:2018-07-04 17:59:00

标签: python string input slice

我正在学习Python,我想做一个简单的是/否问题。

我在互联网上偶然发现了以下代码:

qr = input('Do you love cute owls?')
while True:
    if qr == '' or not qr[0].lower() in ['y','n']: # This line in question
        print('Please answer with yes or no!')
    else:
        break

if qr[0].lower() == 'y': #Do something
if qr[0].lower() == 'n': #Do something else

这使代码可以检测到以y或n开头的任何单词,因此看起来更“聪明”。

我真的很想知道该代码与编写代码之间有什么区别:

qr = input('Do you love cute owls?')
while True:
    if qr == '' or not qr.lower() in ['y','n']: # Difference
        print('Please answer with yes or no!')
    else:
        break

if qr.lower() == 'y': #Do something
if qr.lower() == 'n': #Do something else

为什么第二个代码不起作用?该[0]的目的是什么,为什么没有它,代码将无法检测到以yn开头的单词?我真的很想知道! :)

1 个答案:

答案 0 :(得分:1)

(1)引用此行:if qr == '' or not qr[0].lower() in ['y','n']:

[0]上的qr仅引用输入qr first 字符。

(2)这两段代码之间的差异在同一段上,第一段是

  • if qr == '' or not qr[0].lower() in ['y','n']:
  • if qr == '' or not qr.lower() in ['y','n']:

第二个字符会影响qr整个字符串并保留所有字符,如果输入的字符串长于一个字符,则会有所不同。