Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果不满足条件,如何再给一次输入机会_Python_Regex_String_Input - Fatal编程技术网

Python 如果不满足条件,如何再给一次输入机会

Python 如果不满足条件,如何再给一次输入机会,python,regex,string,input,Python,Regex,String,Input,我想检查用户是否只键入包含字符串的单词 因此,如果用户键入一个数字(32)或数字+字符串的组合(Fight2win),我想让用户在继续之前再次键入 当先前的输入包含一个数字时,我很难再给一次输入的机会。所以,我本来打算使用“While循环”,但现在我不知道在它完成检查后如何打破它 此外,我还试着检查每一个字母表,看看它是否可以转换成整数。我知道还有其他类似isalpha的方法,但我仍然需要知道,如果第二个输入只包含字符串,如何再给它一次输入和重新检查的机会 这是我的原始代码 为True时: x=

我想检查用户是否只键入包含字符串的单词

因此,如果用户键入一个数字(32)或数字+字符串的组合(Fight2win),我想让用户在继续之前再次键入

当先前的输入包含一个数字时,我很难再给一次输入的机会。所以,我本来打算使用“While循环”,但现在我不知道在它完成检查后如何打破它

此外,我还试着检查每一个字母表,看看它是否可以转换成整数。我知道还有其他类似isalpha的方法,但我仍然需要知道,如果第二个输入只包含字符串,如何再给它一次输入和重新检查的机会

这是我的原始代码

为True时:
x=输入(f“请键入一个单词”)。下限()
对于x中的i:
尝试:
int(x)
打印(“类型错误:请仅插入字母!!!”)
           
其他:
通过

这个技巧对我很有效,现在用户可以尝试任意次数,您可以指定中断

start=[]
while True:
     start=list(input(f"Please type a word.").lower())
...
Rest您的逻辑如下,因为您询问了如何为用户合并多次尝试


愉快的编码。

这个技巧对我很有效,现在用户可以尝试任意次数,您可以指定中断

start=[]
while True:
     start=list(input(f"Please type a word.").lower())
...
Rest您的逻辑如下,因为您询问了如何为用户合并多次尝试

快乐编码。

解决方案

你需要考虑以下两种情况(因此有两种方法)。如果您只想删除带有数字的输入(请注意,我们有字母、数字和特殊字符),那么第一种方法提供了一个相当通用的解决方案

让我们考虑这些输入:

  • value=[“10”me@home2", "me2@ho10me", "me@home“,“我的家”]

  • 方法1将接受“me@home“然后从while循环中走出来

  • 方法2在退出while循环之前,只接受上述值列表中的“myhome”
您需要根据您的用例选择要使用的方法

方法1:使用
regex
这将不允许使用

  • 仅数字
  • 字母数字数据
但是,如果需要,这将允许使用特殊字符

重新导入
结果=['0']
pat=重新编译('\d')
#控制消息的打印,如果
#提供的输入无效
verbose=0#设置1进行打印
而结果:
值=输入(“仅输入字母:”)。下限()
结果=pat.findall(值)
如果结果和详细信息>0:
打印(f“>>>无效输入:{value}\n>>>重试…”)
##输出
#仅输入字母:10
#仅输入字母:me@home2
#仅输入字母:me2@ho10me
#仅输入字母:me@home-->循环在此退出
方法2:使用
str.isalpha()
str.isalnum()
这将不允许输入特殊字符和数字

value='0'
#控制消息的打印,如果
#提供的输入无效
verbose=0#设置1进行打印
#方法2.A
而不是值。isalpha():
值=输入(“仅输入字母:”)。下限()
如果不是value.isalpha()和verbose>0:
打印(f“>>>无效输入:{value}\n>>>重试…”)
#方法2.B
而value.isalnum()
值=输入(“仅输入字母:”)。下限()
如果value.isalnum()和verbose>0:
打印(f“>>>无效输入:{value}\n>>>重试…”)
##输出
#仅输入字母:10
#仅输入字母:me@home2
#仅输入字母:me2@ho10me
#仅输入字母:me@home
#仅输入字母:此处退出myhome-->循环

使用
str.isalpha()
检查它是否纯粹是字母表

值=['abcd','10','abc23knh']
[value.isalpha()表示值中的值]
##输出
#[真,假,假]
解决方案

你需要考虑以下两种情况(因此有两种方法)。如果您只想删除带有数字的输入(请注意,我们有字母、数字和特殊字符),那么第一种方法提供了一个相当通用的解决方案

让我们考虑这些输入:

  • value=[“10”me@home2", "me2@ho10me", "me@home“,“我的家”]

  • 方法1将接受“me@home“然后从while循环中走出来

  • 方法2在退出while循环之前,只接受上述值列表中的“myhome”
您需要根据您的用例选择要使用的方法

方法1:使用
regex
这将不允许使用

  • 仅数字
  • 字母数字数据
但是,如果需要,这将允许使用特殊字符

重新导入
结果=['0']
pat=重新编译('\d')
#控制消息的打印,如果
#提供的输入无效
verbose=0#设置1进行打印
而结果:
值=输入(“仅输入字母:”)。下限()
结果=pat.findall(值)
如果结果和详细信息>0:
打印(f“>>>无效输入:{value}\n>>>重试…”)
##输出
#仅输入字母:10
#仅输入字母:me@home2
#仅输入字母:me2@ho10me
#仅输入字母:me@home-->循环在此退出
方法2:使用
str.isalpha()
str.isalnum()
这将不允许输入特殊字符和数字

value='0'
#控制消息的打印,如果
#提供的输入无效
verbose=0#设置1进行打印
#方法2.A
而不是值。isalpha():
值=输入(“仅输入字母:”)。下限()
如果不是value.isalpha()和verbose>0:
打印(f“>>>无效输入:{value}\n>>>重试…”)
#方法2.B
而value.isalnum()
值=输入(“仅输入字母:”)。下限()
如果value.isalnum()和verbose>0:
打印(f“>>>无效输入:{value}\n>>