python - 这行代码中的[0]是什么意思?

标签 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]为什么没有它,代码无法检测到以 y 开头的单词或n ?我真的很想知道! :)

最佳答案

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

qr 上的 [0] 仅指输入 qr第一个字符。

(2)这两段代码的区别在同一个地方,第一个是

  • 如果 ['y','n'] 中的 qr == '' 或不是 qr[0].lower():
  • 如果 ['y','n'] 中的 qr == '' 或不是 qr.lower():

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

关于python - 这行代码中的[0]是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51178925/

相关文章:

python - 为什么 Python 的导入不能像 C 的#include 那样工作?

python - 为什么 Python 2 中的类型顺序是固定的,而 Python 3 中的类型错误是不可排序的?

python - 在 Python 中将字符串转换为 boolean 值

将结构体中的字符数组与用户输入的字符数组进行比较

php - 将查询从用户输入导出到 Excel - 只有 HTML 部分可见

Python 零除错误

java - Android:查找字符串中的特定字符

java - 字符串包含与列表包含

c++ - QString 到 String,反之亦然

Python 3.x : User Input to Call and Execute a Function