用变量切片字符串

时间:2018-03-22 18:54:28

标签: python python-3.x variables

我正在制作一个python程序,我需要检查一个变量的四个字母部分。如果变量是例如 help_me_code_please ,则应输出轻松,然后输出 e_pl 等,我尝试使用

a=0
b=3
repetitions=5
word="10011100110000111010"
for x in range (1,repetitions):        
    print(word[a:b])
    a=a+4
    b=b+4 

然而它只输出空行。 非常感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:0)

这应该有效:

words = "help_me_code_please"
size = 4
start = len(words)%size - size

for i in reversed(range(start, len(words), size)):
    print(words[max(0,i):i+size])

输出

ease
e_pl
_cod
p_me
hel

说明:start为我们提供了一个起点,即距离我们的字符串(单词)的长度有一些可分割的块。在我们的示例中,它是-1,因为20 (5*4)19 words19 -> -1的长度。

现在我们从第4个words[15:19]开始进行反向循环。所以我们去15,11,7,3,-1。在每个循环中,我们从我们的位置打印到位置+ 4.因此第一个循环迭代打印出ease输出words[11:15],第二个输出#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { FILE *inFile; int i,j; int rows, cols; inFile = fopen ("Matrix.txt", "r"); if (inFile == NULL) { printf("\n\nFile does not exist or cannot be opened.\n"); exit(1); } fscanf(inFile,"%d %d", &rows, &cols); int m1[rows][cols],m2[rows][cols],m3[rows][cols]; /*Scan and store Matrix 1 and Matrix 2*/ for (i = 0; i < rows; i++) { for ( j = 0;j<cols;j++) { fscanf(inFile,"%d", &m1[i][j]); } } for (i = 0; i < rows; i++) { for ( j = 0;j<cols;j++) { fscanf(inFile,"%d", &m2[i][j]); } } fclose(inFile); printf("\nThe sum of the two matrices:\n"); for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { m3[i][j]=m1[i][j]+m2[i][j]; printf(" %d", m3[i][j]); } printf("\n"); } } 等等。这导致我们看到的输出。

希望这种解释有意义!

答案 1 :(得分:0)

假设你想要重复打印4个字。

word = 'help_me_code_please'

# Looping from backwards on the word with a step of 4
for i in range(len(word)-1, -1, -4):
    # j is the starting point from where we have to print the string.
    j = i-3 if i > 3 else i-1
    print word[j:i+1]

答案 2 :(得分:0)

前进:

[word[::-1][4*l:4*(l+1)][::-1] for l in range(0, int(len(word)/4)+1)]
['ease', 'e_pl', '_cod', 'p_me', 'hel']

对于落后:

word="10011100110000111010"
[word[4*l:4*(l+1)] for l in range(0, int(len(word)/4)+1)]
['1001', '1100', '1100', '0011', '1010']

[word[::-1][4*l:4*(l+1)] for l in range(0, int(len(word)/4)+1)]
['0101', '1100', '0011', '0011', '1001']

这是列表推导(https://docs.python.org/3.6/tutorial/datastructures.html#list-comprehensions),您可以迭代结果列表。

其var [start:ends:step]。 word [:: - 1]表示得到一个字母,从头开始,在结尾处完成,然后前进-1步,所以它反转字符串

对于新值:

writeFields