Python 在这个练习中,我应该把变量放在哪里?

Python 在这个练习中,我应该把变量放在哪里?,python,python-3.x,Python,Python 3.x,我做了这个练习,在这个练习中,我打印的句子的结尾必须是符号/字母“p”。 当我运行此程序时,结果如下: 如果我使用数字9: p q p q p q p p q p 正如你所看到的,“p”总是在句子的开头,但我希望它总是在结尾。像这样的 我认为变量“a”每次必须减少1。虽然,我不知道我会把它放在哪里。 这是密码 number=int((输入()+1)/2-1) i=1 当i=i时: 如果%2==0: 打印(“q”,end=”“) a-=1 如果%2==1: 打印(“p”,end=”“

我做了这个练习,在这个练习中,我打印的句子的结尾必须是符号/字母“p”。 当我运行此程序时,结果如下: 如果我使用数字9:

p q p q

p q p

p q 

p 
  • 正如你所看到的,“p”总是在句子的开头,但我希望它总是在结尾。像这样的
  • 我认为变量“a”每次必须减少1。虽然,我不知道我会把它放在哪里。 这是密码

  • number=int((输入()+1)/2-1)
    i=1
    当i=i时:
    如果%2==0:
    打印(“q”,end=”“)
    a-=1
    如果%2==1:
    打印(“p”,end=”“)
    a-=1
    打印()
    i+=1
    
    使用[-1]将“p”放在末尾

    我对您的代码做了一些更改(使用python 3)

    input\u num=int(input())
    数字=整数((输入数字+1)/2-1)
    def打印行(行长):
    如果行长度%2==1:
    #从p开始
    字母=['p','q']
    其他:
    #从q开始
    字母=['q','p']
    对于范围内的i(线长度):
    pos=i%2
    #打印相关信函
    打印(字母[pos],结束=“”)
    打印()
    对于范围内的n(数字,0,-1):
    打印行(n)
    
    我制作了一种方法,知道如何打印特定的行

    它接收
    行长度
    ,并知道如何打印p和q

    如果线的长度是奇数,我们需要从p开始

    • 1-p
    • 3-pqp
    • 5-p q p q p
    • 等等
    如果线的长度是偶数,我们从q开始

    • 2-Qp
    • 4-qp-qp
    • 6-q p q p q p
    • 等等

    在本例中,您希望看到的行数是与输入+1相加的整数。1+2+3+4 = 10 = 9+1. 将有4行,并且在每行上您希望跟踪该行上的字母数。使用更好的变量名可以更容易地遵循代码

    input = 9
    n_lines = 1
    i = 1
    while i < input:
        i += n_lines
        n_lines += 1
    
    for line_number in range(n_lines):
        number_letters = n_lines - line_number  # This will be number of letters: 4, 3, 2, 1
        for i in range(number_letters - 1):
            print("q", end="")
        print("p")
    
    input=9
    n_线=1
    i=1
    当我输入时:
    i+=n_线
    n_行+=1
    对于范围内的行数(n行):
    数字字母=n行-行数字这将是字母的数量:4,3,2,1
    对于范围内的i(数字字母-1):
    打印(“q”,end=”“)
    打印(“p”)
    
    我帮你修好了。如果您想查看更改的内容,请检查。如果您使用的是Python 3,
    input()+1
    应该会失败,因为
    input()
    返回一个字符串,并且您不能添加字符串和int。您实际使用的是Python 2吗?如果是这样,那么使用
    print
    作为函数应该会失败,那么看看这里发生了什么。纯粹从逻辑角度来看(忽略@wjandrea指出的
    input()
    问题),如果您希望第一个字符输出发生变化,那么始终使用
    a=number
    启动循环将始终产生相同的字母输出。因此,您必须通过
    i
    改变初始数字,可能从a=i开始(每个循环加1),或者从
    a=number-i
    开始。在哪里?OP代码中没有支持索引的对象。
    number = int((input()+1)/2 - 1)
    
    i = 1
    
    while i <= number:
    
        a = number
        while a >= i:
            if a % 2 == 0:
                print("q", end = " ")
                a -= 1
            elif a % 2 == 1:
                print("p", end = " ")
                a -= 1
        print()
        i += 1
    
    input = 9
    n_lines = 1
    i = 1
    while i < input:
        i += n_lines
        n_lines += 1
    
    for line_number in range(n_lines):
        number_letters = n_lines - line_number  # This will be number of letters: 4, 3, 2, 1
        for i in range(number_letters - 1):
            print("q", end="")
        print("p")