我们需要打印这个模式,但我不知道为什么我的代码没有打印正确的模式,而且我们只能在循环时使用

2024-06-28 20:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

打印给定N行数的以下图案

N=4的模式:

A
BC
CDE
DEFG

我的代码正在打印:

A
BC
CED
DGFE

代码:

n = int(input())
i = 1
start_char = chr(ord('A'))

while i <= n:
    j = 1
    while j <= i :
        charP = chr(ord(start_char) + i - 1)
        print(charP, end = '')
        start_char = chr(ord('A')+ i - j)
        j += 1
    print()
    i += 1

Tags: 代码模式startprintbc图案charwhile
2条回答

您不应该仅在每行的开头更新内部循环中的start_char。如果您只是想用ord()将其转换回一个数字,那么也不需要将其设置为字符。把号码放在那儿就行了

使用基于零的循环意味着不必减去1

n = int(input())
i = 0
for while i < n:
    start_char = ord('A') + i
    j = 0
    while j < i + 1:
        charP = chr(start_char + j)
        print(charP, end='')
        j += 1
    print()
    i += 1

实际上,通过将ij组合到charP的赋值中,可以完全不使用start_char

n = int(input())

i = 0
for while i < n:
    j = 0
    while j < i + 1:
        charP = chr(ord('A') + i + j)
        print(charP, end='')
        j += 1
    print()
    i += 1

没有必要去摆弄ord()chr()。Python使直接处理字符串变得容易。如果您想从'A'开始,然后从那里继续,请使用string.ascii_uppercase获取所需的字母

从全套字母A-Z开始。在第一行,打印第一个字符,然后扔掉。在第二行中,打印前两个字符并丢弃1。在第三行中,打印前三个字符并抛出方式2。等等

import string
n = int(input())
letters = string.ascii_uppercase
length = 0
retain = 0
while length < n:
    length += 1
    line = letters[:length]
    letters = letters[length-retain:]
    retain+=1
    print (line)

你的问题陈述没有说明你想在Z之后发生什么。所以这只适用于输入值高达13的情况。使用ordchr将在Z之后提供[ \ ] ^ _ `` a b,这可能有点出乎意料

相关问题 更多 >