如何让程序使用while循环和if语句重复自己?

时间:2016-02-04 18:30:49

标签: python if-statement

我是Python的新手,我发现很难理解语言的某些方面。我被要求为作业创建一个程序,并且在尝试使用本网站几小时后,我无济于事。

问题是: 编写一个程序,使用循环来获取名字和姓氏 来自未定义数量的用户的电话号码。该程序 应该允许用户在循环的每次迭代后退出选项。 该程序还应将用户输入的信息写入名为names.tx的文本文件

我对粗体问题的部分没有任何问题,但我真的无法绕过第一位。这是我到目前为止所做的:

def main():

    infoList = []
    count = 0

while True:

    firstname = input('Please enter your first name: ')
    lastname = input('Please enter your last name: ')
    telephoneno = input('Please enter your telephone number: ')
    contiinue = input('Continue (y = yes): ')
    if contiinue == y:
        count = count + 1

main()

当程序再次迭代时,我希望用户能够为问题提供不同的细节。我知道当人们提出问题时人们讨厌,看起来他们只是想让人们为他们做功课,但如果我找不到解决方案的话,这会让我有一段时间的错误。

6 个答案:

答案 0 :(得分:0)

这里有几个问题:

  • 首先,正如Paul McGuire的评论所说,你的while循环没有正确缩进;因此Python将其视为程序文件的一个独立部分。

  • 其次,你无法离开你的while循环。如果您要使用while True构造,则需要在某处使用break语句;最有可能的是,您希望{&#34}跟随"然后阻止"您的else(我最初忽略的另一个问题是您在那里省略了引号),if contiinue = 'y'作为break块中的唯一行。或者,您可以在while中进行测试,这将在达到某些条件时停止循环。例如,您可以将您的连续变量预先初始化为' y' (在循环插入else之前)并将contiinue = 'y'更改为while True

答案 1 :(得分:0)

好像你有两个不同的问题:

Breaking out of a loop.

您有两种选择:

  1. break statement会立即结束while循环。您可以决定用户应该键入哪些内容以退出(例如"q"或其他),检查他们是否已输入,以及break(如果是)。
  2. while循环在声明中有退出条件,您可以将它用于与上面相同类型的退出命令。例如:

    user_input = "default value"
    while user_input != "q":
        user_input = raw_input("Type 'q' if you want to exit!")
    
  3. How to write data to a file.

    Python有一个名为open()的内置函数,可以让你与文件进行交互。

    my_file = open("my_file.csv", "r")将在" r"中为您提供一个文件对象模式(只读模式);您可以执行for line in my_file之类的操作来访问其内容。

    my_file = open("my_file.csv", "w")将在" w"中为您提供一个文件对象模式(写入模式);你可以通过my_file.write(my_data)将变量的内容写入其中。请注意,此覆盖文件中已有的任何内容,因此请谨慎操作。

    完成文件后,请务必使用my_file.close()将其关闭。

    祝你好运!

答案 2 :(得分:0)

首先需要缩进循环及其内容,以便将其识别为main()的一部分,因为它与主

分开。

对于你的while循环,你应该使用initialize contiinue to' n'并按照以下while contiinue == 'y'更改您的while循环,这将继续循环,直到' y'进入。您还应该将if contiinue == y:更改为if contiinue == 'y':,因为没有引号的y是变量,而不是char。

对于文本文件,您应该在循环之前打开文件,在循环中写入它,然后关闭它。由于你是逐行编写的,你也不需要infoList []或count,因为在f.write()的末尾添加\n会使行向下移动。

def main():

    contiinue = 'n'
    f = open('names.txt','w')

    while contiinue == 'y':

        firstname = input('Please enter your first name: ')
        lastname = input('Please enter your last name: ')
        telephoneno = input('Please enter your telephone number: ')
        contiinue = input('Continue (y = yes): ')
        f.write(firstname + ' '+ lastname + ' ' telephoneno + '\n')

    f.close()

main()

答案 3 :(得分:0)

我会这样做(对代码的改动很小):

def main():

    infoList = []
    count = 0

    while True:

        firstname = input('Please enter your first name: ')
        lastname = input('Please enter your last name: ')
        telephoneno = input('Please enter your telephone number: ')
        contiinue = input('Continue (y = yes): ')
        if contiinue == "y":
            count = count + 1
        else:
            break

main()

答案 4 :(得分:0)

我在代码中添加了一些代码和注释,可以帮助您入门。

def main():

    infoList = []
    count = 0

    while True:

        firstname = input('Please enter your first name: ')
        lastname = input('Please enter your last name: ')
        telephoneno = input('Please enter your telephone number: ')
        # you probably want to append to infoList here
        contiinue = input('Continue (y = yes): ')
        if contiinue == "y": #make sure it's a string
            count = count + 1
        else:
            # figure out how to break from your loop
            # otherwise it will execute forever
    #outside the loop here so write everything in infoList here
    with open('names.txt', 'w') as f:
        #write to your file

main()

答案 5 :(得分:-1)

这只是一个大纲。

尝试类似:

names=[]
counter=1
while True:
    name=input("name {} or 'q' to quit:".format(counter))
    if name.lower()=="q":
        break
    else:
        names.append(name)    
        counter+=1

print(names)