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