fly= input("give me an input")
list=["f","r","u","i","t"]
letter=0
for i in list:
if i==(fly(letter)):
print("valid")
letter +=1
else:
print("invalid")
输出应根据其中包含的字母显示该单词是否有效。
我在Python上相当新。我想知道输出是否有效当输入只能由字母" f"," r"," u",& #34; I"和" t"如果在输入中写入另一个字母,结果应该是无效的。所以任何单词水果的位移都是有效的,但如果输入是" tfruh"然后它应该显示无效,因为不需要的字母" h"。然而,并非所有字母都必须包含在内,因此输入可以是" fru"并且应该是有效的。另外如何找到无效字符的位置并打印出来?
答案 0 :(得分:1)
您可以使用此代码:
fly= input("give me an input ")
mylist=["f","r","u","i","t"]
letter=0
for i in fly:
if i in mylist:
print("valid")
letter +=1
else:
print("invalid")
对于输入中的每个字符,检查允许的字符列表是否包含它。
答案 1 :(得分:0)
您可以创建一个类似下面的函数来检查您的单词是否是有效单词(单词的每个字符都在您的列表中),并使用无效字符索引中断代码(解释添加为代码的注释) ):
def check_validity(word):
my_list = ["f", "r", "u", "i", "t"]
# ^ don't use `list` as variable name as it is an in-built data type
# `enumerate` allows to iterate the list returning the index as well
for i, c in enumerate(word):
# check character of your string is not in your list
if c not in my_list:
print("invalid character '{}'' at index: {}".format(c, i))
break # break loop if condition satisfies
else:
print("Valid word: {}".format(word))
示例运行:
>>> check_validity("fruit")
Valid word: fruit
>>> check_validity("itf")
Valid word: itf
>>> check_validity("frugit")
invalid character 'g'' at index: 3
注意:我将字符串传递给这些函数,但是您传递input()
返回的值(在您的情况下是fly
变量)。
答案 2 :(得分:0)
测试字符是否有效的有效方法是使用一组有效字母。我们可以使用内置的enumerate
函数同时获取单词中的字符及其位置。
allowed = set('fruit')
words = ('fitur', 'iursfgt', 'ffrruuiitt', 'FRUIT')
for word in words:
print(word)
valid = True
for i, c in enumerate(word):
if c not in allowed:
print('Bad char', c, 'at position', i)
valid = False
if valid:
print(word, 'is valid\n')
else:
print(word, 'is invalid\n')
<强>输出强>
fitur
fitur is valid
iursfgt
Bad char s at position 3
Bad char g at position 5
iursfgt is invalid
ffrruuiitt
ffrruuiitt is valid
FRUIT
Bad char F at position 0
Bad char R at position 1
Bad char U at position 2
Bad char I at position 3
Bad char T at position 4
FRUIT is invalid
如果不允许使用enumerate
,则可以使用间接迭代,循环遍历range
,并使用它来索引单词。并且你不需要对允许的字母使用集合,你可以只使用字符串或列表。
allowed = 'fruit'
words = ('fitur', 'iursfgt', 'ffrruuiitt', 'FRUIT')
for word in words:
print(word)
valid = True
for i in range(len(word)):
c = word[i]
if c not in allowed:
print('Bad char', c, 'at position', i)
valid = False
if valid:
print(word, 'is valid\n')
else:
print(word, 'is invalid\n')
此代码生成与早期版本相同的输出。
只是为了好玩,这是一个几乎不可读的版本。 ;)
allowed = set('fruit')
words = ('fitur', 'iursfgt', 'ffrruuiitt', 'FRUIT')
for word in words:
a = [word]
a.extend(f'Bad char {c} at position {i}' for i, c in enumerate(word)
if c not in allowed)
a.append(f"{word} is {('in', '')[not a]}valid\n")
print('\n'.join(a))
这绝对是不一种编码方式的好方法!