使用while循环从字符串一次打印一个字符

时间:2013-03-05 10:31:38

标签: python while-loop

我正在阅读“核心Python编程第二版”,他们要求我使用“while”循环一次打印一个字符串,一个字符。

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

所以我必须做的事情:

用户提供输入:

text = raw_input("Give some input:  ")

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

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

我想我要使用len(文本),但我不能100%确定如何在这个问题中使用它。

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

提前thx! :)

9 个答案:

答案 0 :(得分:8)

我很确定,互联网上充满了python while-loops,但是有一个例子:

i=0

while i < len(text):
    print text[i]
    i += 1

答案 1 :(得分:3)

字符串可以包含for循环:

class QuestionForm(forms.ModelForm):
    class Meta:
        model = Question
        fields = ['pub_date', 'question_text']

class QuestionAdmin(admin.ModelAdmin):
    model = Question
    form = QuestionForm

admin.site.register(Question, QuestionAdmin)

答案 2 :(得分: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循环,但是当我们想要循环运行预设次数时我们使用它们。 Java for循环通常使用某种计数器变量(下面我使用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循环。

HOWEVER 一般情况下,在这种情况下你会使用for循环,因为它更容易阅读。

答案 3 :(得分: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]

为了使用它你必须知道如何使用程序,虽然它有效,但它最终有一个错误,所以你也必须解决这个问题。

答案 4 :(得分:0)

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

for character in 'string':
    print(character)

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

答案 5 :(得分: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 )

答案 6 :(得分:0)

Python代码:

for s in myStr:
        print s

OR

for i in xrange(len(myStr)):
    print myStr[i]

答案 7 :(得分:0)

试试看...

使用while循环打印每个字符

i=0
x="abc"
while i<len(x) :
    print(x[i],end=" ")
    print(i)
    i+=1

答案 8 :(得分:-2)

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

 Map<String,String> nameMap = new HashMap<String,String>();
 nameMap.put("firstName",firstName);
 nameMap.put("secondName",secondName);