所以我正在做作业,但我似乎不知道如何在常规语句中添加“额外”字符
我想让这段代码说明lname
只能由字母和" "
或/和"-"
符号组成,不能以" "
开头。我怎样才能做到这一点?我甚至不知道该搜索或尝试什么。难道没有某种内置的“包含”功能吗?我快绝望了
def perenimi2():
global lname
lname = perenimi.get()
if lname.isalpha():
textVar.set("")
nd2 = {"Perenimi": str(lname)}
uusklient.update(nd2)
post2()
else:
textVar.set ("Sisestage korrektne perekonnanimi!")
我的意思是,我怎样才能做出IF语句,它必须包含字母,也可能包含“-”或/和空格。我想使fname仅为字母和“-”或/和空格。(这适用于也不能以空格开头的名称字段)
如果以前有人问过这个问题,我很抱歉,但我还没有找到解决方案
----使用张贴答案后的代码----
通过发布的答案,我发现了一个新问题,它现在允许输入或条目为空,而不能为空
我把所有的东西都翻译成英语
import string
###FirstName
def firstname1():
global fname
allowed = " -"
cantStart = " "
fname = firstname.get()
if (set(fname) <= set(allowed + string.ascii_letters) and not fname.startswith(cantStart)):
textVar.set("")
familyname2()
elif fname == "":
textVar.set("Insert correct name!")
else:
textVar.set("Insert correct name!")
###FamilyName
def familyname2():
global lname
lname = familyname2.get()
allowed = " -"
cantStart = " "
empty = ""
if (set(lname) <= set(allowed + string.ascii_letters) and not lname.startswith(cantStart)):
textVar.set("")
post2()
elif lname == "":
textVar.set("Insert correct family name!")
else:
textVar.set("Insert correct family name!")
firstname1()
No
elif
分支(即从代码中删除它)解释:
string.ascii_letters
是"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set(lname)
是lname
中所有字符的集合,e。G如果lname == "abba"
,那么set(lname)
将是"ab"
两个集合之间的
<=
运算意味着“是的子集”,即如果左集合中的所有元素也存在于右集合中lname
仅适用于非空字符串(您也可以使用lname != ""
,但仅使用lname
更适合于python)if
分支中的长表达式用括号括起来,仅用于将其自由拆分为更多行的可能性,,即不需要用连续符号(\
结束每一个非完整行。否则,它必须采用如下形式:(或仅用一行很长的文字完整书写)
相关问题 更多 >
编程相关推荐