首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在接受输入之前,需要对照列表检查输入的raw_input问题

在接受输入之前,需要对照列表检查输入的raw_input问题
EN

Stack Overflow用户
提问于 2017-04-19 17:53:29
回答 1查看 30关注 0票数 0

对外面的人来说,这会很简单,但对我来说,对于一个基本的新手来说,这让我头疼。

我需要一个用户输入一个教育等级A,B,C,D,E或F。

我希望小写或大写都是可以接受的,但对于任何其他输入值,它都要循环,直到它们循环为止。

到目前为止,我已经这样写了:

代码语言:javascript
复制
grades = (raw_input("Please enter your educational grade either as A, B, C, D, E or F: "))

# checking for truthiness
while grades != ("A", "a", "B", "b", "C", "c", "D", "d", "E", "e", "F", "f"):
    print ("The grade you entered does not conform.")
    grades = (raw_input("Please enter your educational grade either as A, B, C, D, E or F: "))

# display valid input
print ("Your input is valid, you entered:  "), grades

谢谢,克里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 18:13:43

使用str.upper()str.lower()可以检查用户输入,但与while循环中的列表中使用的情况相匹配是一致的。这有点重复/多余,但我认为满足了您的要求:

代码语言:javascript
复制
grades = raw_input("Please enter your educational grade either as A, B, C, D, E or F: ").upper()

while grades not in(["A", "B", "C", "D", "E", "F"]): 
    print ("The grade you entered does not conform.")
    grades = raw_input("Please enter your educational grade either as A, B, C, D, E or F: ").upper()

print ("Your input is valid, you entered: "), grades

或者,一个while True:循环版本完成相同的任务,但在循环中移动提示用户输入,从而减少代码重复。

代码语言:javascript
复制
while True:
    grades = raw_input("Please enter your educational grade either as A, B, C, D, E or F: ").upper()
    if grades not in(["A", "B", "C", "D", "E", "F"]):
        print ("The grade you entered does not conform.")
    else:
        print ("Your input is valid, you entered: "), grades
        break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43502851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档