如何用';X';在Python中设置为最小长度?

如何用';X';在Python中设置为最小长度?,python,string,python-3.x,Python,String,Python 3.x,最近,在我的GCSE计算机科学课上,我们被告知编写一个程序,将某人的名字和姓氏放在一个字符串中,然后将名字的第一个字母和姓氏的前四个字母打印出来,如果用户没有一个姓氏比一个字符长,它将用字母“x”替换空白空间。 在考试中,我们不允许访问互联网,所以我在不使用互联网的情况下开发了这个程序,但现在我想知道是否有一种更简单的方法来编写我制作的程序 while True: fullname = input("\nPlease type in your firstname and your sur

最近,在我的GCSE计算机科学课上,我们被告知编写一个程序,将某人的名字和姓氏放在一个字符串中,然后将名字的第一个字母和姓氏的前四个字母打印出来,如果用户没有一个姓氏比一个字符长,它将用字母“x”替换空白空间。

在考试中,我们不允许访问互联网,所以我在不使用互联网的情况下开发了这个程序,但现在我想知道是否有一种更简单的方法来编写我制作的程序

while True:
    fullname = input("\nPlease type in your firstname and your surname: ")

    space = fullname.index(" ")
    length = len(fullname)
    x = "X"

    endsur = length - 1
    initialfirst = fullname[0]

    fullsurname = endsur - space

    if fullsurname >= 4:
        startsur = space + 1
        secondsur = space + 2
        thirdsur = space + 3
        fourthsur = space+ 4

        surname = fullname[startsur] + fullname[secondsur] + fullname[thirdsur] + fullname[fourthsur]

        print(initialfirst,surname)

        again = input("\nWould you like to go again? (Y/N)")

        if again == "y":
            continue
        if again == "n":
            print("Goodbye!")
            quit()

    if fullsurname == 3:
        startsur = space + 1
        secondsur = space + 2
        thirdsur = space + 3

        surname = fullname[startsur] + fullname[secondsur] + fullname[thirdsur] + x

        print(initialfirst,surname)

        again = input("\nWould you like to go again? (Y/N)")

        if again == "y":
            continue
        if again == "n":
            print("Goodbye!")
            quit()

    if fullsurname == 2:
        startsur = space + 1
        secondsur = space + 2

        surname = fullname[startsur] + fullname[secondsur] + x + x

        if again == "y":
            continue
        if again == "n":
            print("Goodbye!")
            quit()

    if fullsurname == 1:
        startsur = space + 1

        surname = fullname[startsur] + x + x + x

        if again == "y":
            continue
        if again == "n":
            print("Goodbye!")
            quit()

    if fullsurname <= 0:
        print("\nIt looks like you've not put in your surname. Please make sure to use a space between your firstname and your surname.")
为True时:
全名=输入(“\n请输入您的名字和姓氏:”)
空格=全名。索引(“”)
长度=长度(全名)
x=“x”
endsur=长度-1
initialfirst=全名[0]
fullname=endsur-空间
如果完整姓氏>=4:
startsur=空间+1
secondsur=空间+2
thirdsur=空间+3
四等分=空间+4
姓氏=全名[startsur]+全名[secondsur]+全名[thirdsur]+全名[fourthsur]
打印(姓名首字母,姓氏)
再次=输入(“\N是否要再次执行?(Y/N)”)
如果再次==“y”:
持续
如果再次==“n”:
打印(“再见!”)
退出
如果full姓氏==3:
startsur=空间+1
secondsur=空间+2
thirdsur=空间+3
姓氏=全名[startsur]+全名[secondsur]+全名[thirdsur]+x
打印(姓名首字母,姓氏)
再次=输入(“\N是否要再次执行?(Y/N)”)
如果再次==“y”:
持续
如果再次==“n”:
打印(“再见!”)
退出
如果full姓氏==2:
startsur=空间+1
secondsur=空间+2
姓氏=全名[startsur]+全名[secondsur]+x+x
如果再次==“y”:
持续
如果再次==“n”:
打印(“再见!”)
退出
如果full姓氏==1:
startsur=空间+1
姓氏=全名[startsur]+x+x+x
如果再次==“y”:
持续
如果再次==“n”:
打印(“再见!”)
退出
如果full姓氏
为True:
name=input('你叫什么名字?')
name=name.split(“”)
first_name=名称[0]
姓氏=姓名[1]
如果len(姓氏)<4:
姓氏+='x'*(4-len(姓氏))
合起来=名[0]+姓[0:4]
#您可以在此处添加错误检查
打印(一起)
cont=input('您想再试一次吗?')
如果cont==“y”:
通过
其他:
打破
为True时:
name=input('你叫什么名字?')
name=name.split(“”)
first_name=名称[0]
姓氏=姓名[1]
如果len(姓氏)<4:
姓氏+='x'*(4-len(姓氏))
合起来=名[0]+姓[0:4]
#您可以在此处添加错误检查
打印(一起)
cont=input('您想再试一次吗?')
如果cont==“y”:
通过
其他:
打破

这段代码是@Wright答案的一个补充:提示:避免使用不必要的变量来进一步压缩代码并避免名称空间溢出

while 1:
    first_name, last_name  = input('What is your name? ').split(' ')
    if len(last_name) < 4:
        last_name += 'x'*(4-len(last_name))   
    together = first_name[0] + last_name[0:4]
    print(together)
    if input('Would you like to go again? ') != 'y':
        break
而1:
名字,姓氏=输入('你叫什么?')。拆分('')
如果len(姓氏)<4:
姓氏+='x'*(4-len(姓氏))
合起来=名[0]+姓[0:4]
打印(一起)
如果输入('您想再去吗?')!='y':
打破

这段代码是@Wright答案的一个补充:提示:避免使用不必要的变量来进一步压缩代码并避免名称空间溢出

while 1:
    first_name, last_name  = input('What is your name? ').split(' ')
    if len(last_name) < 4:
        last_name += 'x'*(4-len(last_name))   
    together = first_name[0] + last_name[0:4]
    print(together)
    if input('Would you like to go again? ') != 'y':
        break
而1:
名字,姓氏=输入('你叫什么?')。拆分('')
如果len(姓氏)<4:
姓氏+='x'*(4-len(姓氏))
合起来=名[0]+姓[0:4]
打印(一起)
如果输入('您想再去吗?')!='y':
打破
打印(“输入您的名字和姓氏(例如克里斯托弗·布朗)”)
尽管如此:
名称=输入('>')。拆分()
如果名称==['q']:
退出()
elif len(姓名)<2:
打印(“无效输入”)
持续
打印(名称[0][0],名称[1][:4如果len(名称[1])>=4其他len(名称[1])]+'X'*(4-len(名称[1]))
我显著地缩短了你的代码,我把所有的输入都移到了一行的一个变量上,然后它做了一些检查并从一行打印出来,不客气

print(“输入您的名字和姓氏(例如Christopher Brown)”)
尽管如此:
名称=输入('>')。拆分()
如果名称==['q']:
退出()
elif len(姓名)<2:
打印(“无效输入”)
持续
打印(名称[0][0],名称[1][:4如果len(名称[1])>=4其他len(名称[1])]+'X'*(4-len(名称[1]))

我显著地缩短了你的代码,我把所有的输入都移到了一行的一个变量上,然后它做了一些检查并从一行打印出来,不客气

确保姓氏有足够字符的最简单方法是首先添加
'XXXX'
填充

fullname = input(…)
firstname, surname_x = (fullname + "XXXX").split()
print(firstname[0], surname_x[:4])

确保姓氏有足够字符的最简单方法是首先附加
'XXXX'
填充

fullname = input(…)
firstname, surname_x = (fullname + "XXXX").split()
print(firstname[0], surname_x[:4])
您也可以使用Python来实现这一点

while True:
    name = input('What is your name? ')
    print('{:.1}{:x<4.4}'.format(*name.split(' ', 1)))
    if input('Would you like to go again? ') != 'y':
        break
为True时:
name=input('你叫什么名字?')
print('{.1}{:x您也可以使用Python进行此操作

while True:
    name = input('What is your name? ')
    print('{:.1}{:x<4.4}'.format(*name.split(' ', 1)))
    if input('Would you like to go again? ') != 'y':
        break
为True时:
name=input('你叫什么名字?')

打印('{.1}{:xYes,可能要短得多,你应该在CodeReview中发布它,因为它是一个工作代码,修复了缩进。当你试图将它格式化为代码时,看起来你没有突出显示
,而true
。如果上面的代码是完整的,并且可以工作,那么这里通常不认为它是本体。code Review用于改进工作代码。Code似乎不起作用。
请输入您的fir