8

我正在阅读“Core Python Programming 2nd Edition”,他们要求我使用“while”循环一次打印一个字符串。

我知道 while 循环是如何工作的,但由于某种原因,我无法想出如何做到这一点。我一直在环顾四周,只看到使用 for 循环的示例。

所以我必须做的:

用户提供输入:

text = raw_input("Give some input:  ")

我知道如何从数组中读出每条数据,但我不记得如何对字符串执行任何操作。

现在我需要的是工作while循环,它打印字符串的每个字符,一次一个。

我想我必须使用 len(text),但我不是 100% 确定如何在这个问题中使用它。

一些帮助会很棒!我确定这是一个非常简单的问题,但由于某种原因我无法想出它!

提前谢谢!:)

4

9 回答 9

10

我很确定,互联网上到处都是 python while-loops,但是一个例子:

i=0

while i < len(text):
    print text[i]
    i += 1
于 2013-03-05T10:35:05.423 回答
6

字符串可以有 for 循环:

for a in string:
    print a
于 2015-07-05T20:43:52.950 回答
2

其他答案已经为您提供了使用while循环(或for循环)迭代字符串所需的代码,但我认为解释两种类型的循环之间的区别可能很有用。

while循环重复一些代码,直到满足某个条件。例如:

import random

sum = 0
while sum < 100:
    sum += random.randint(0,100) #add a random number between 0 and 100 to the sum
    print sum

此代码将继续添加 0 到 100 之间的随机数,直到总数大于或等于 100。重要的是,此循环可以只运行一次(如果第一个随机数是 100)或者它可以永远运行(如果它保持选择 0 作为随机数)。在完成之前,我们无法预测循环将运行多少次。

for循环基本上只是 while 循环,但是当我们希望循环运行预设次数时会使用它们。Javafor循环通常使用某种计数器变量(下面我使用i),并且通常使whilefor循环之间的相似性更加明确。

for (int i=0; i < 10; i++) { //starting from 0, until i is 10, adding 1 each iteration
    System.out.println(i);
}

这个循环将运行 10 次。这只是一个更好的写法:

int i = 0;
while (i < 10) { //until i is 10
   System.out.println(i);
   i++; //add one to i 
}

for 循环最常见的用法是遍历一个列表(或一个字符串),Python 很容易做到这一点:

for item in myList:
    print item

或者

for character in myString:
    print character

但是,您不想使用for循环。在这种情况下,您需要使用其索引查看每个字符。像这样:

print myString[0] #print the first character
print myString[len(myString) - 1] # print the last character.

知道可以for只使用循环和计数器来创建循环,并且知道可以通过索引访问单个字符,现在应该很容易使用循环while一次访问每个字符。while

但是,通常在这种情况下您会使用for循环,因为它更易于阅读。

于 2013-03-05T10:54:22.793 回答
2

试试这个过程:

def procedure(input):
    a=0
    print input[a]
    ecs = input[a] #ecs stands for each character separately
    while ecs != input:
        a = a + 1
        print input[a]

为了使用它,您必须知道如何使用程序,尽管它有效,但最终还是有错误,因此您也必须解决它。

于 2015-04-26T22:36:42.340 回答
0

Python 允许您使用字符串作为迭代器:

for character in 'string':
    print(character)

我猜你的工作是弄清楚如何把它变成一个while循环。

于 2013-03-05T10:34:56.603 回答
0
   # make a list out of text - ['h','e','l','l','o']
   text = list('hello') 

   while text:
       print text.pop()

:)

在 python 中,空对象被评估为 false。.pop() 删除并返回列表中的最后一项。这就是它反向打印的原因!

但可以使用以下方法修复:

text.pop( 0 )
于 2013-03-05T14:49:14.893 回答
0

蟒蛇代码:

for s in myStr:
        print s

或者

for i in xrange(len(myStr)):
    print myStr[i]
于 2016-09-19T20:22:31.107 回答
0

试试这个...

使用 while 循环打印每个字符

i=0
x="abc"
while i<len(x) :
    print(x[i],end=" ")
    print(i)
    i+=1
于 2020-05-01T06:05:11.623 回答
-2

这将打印文本中的每个字符

text = raw_input("Give some input:  ")
for i in range(0,len(text)):
   print(text[i])
于 2015-04-28T09:10:26.660 回答