请帮助一个新的python(3x)

时间:2013-09-12 06:40:30

标签: python python-3.x

我是Python新手。这是我的第一种编程语言,我很难理解人们认为简单的东西(可能是)。至少可以说让我感到愚蠢。我可以使用一些我坚持使用的指针。基本上我需要做的是创建一个程序,它将创建一个包含10个绿色瓶子的文本文件。

def kevin():
    file = open('greenbottles.txt','a')
    file.write(a)
    file.close()

def skinner():
    kevin('rabbits\n')

skinner()

这是我到目前为止创建和写入文本文件所做的工作。 (该文件应该出现在Python文件所在的同一目录中,根据我所看到和阅读的内容。我注意到有时它不会出现?)当我打开文件时,它应该写有兔子并且{ {1}}表示强制创建新行。

我需要做的是使用列表和变量在文本文件中编写歌曲的经文。此外,大部分歌曲都应该在循环中创建(我认为while循环最好)。如果有人能给我一些关于如何添加一节经文的指示,我将感激不尽。

  

“十个绿色瓶子   挂在墙上
  十个绿色瓶子
  挂在墙上
  如果一个绿色的瓶子   应该不小心掉下来   将有九个绿色瓶子   挂在墙上“

其中一节经文。

我期待的是这段代码应该创建一个包含单词rabbit的文本文件。 \nkevin是我命名的函数,所以我可以更好地理解它;无论你想要什么,都可以随叫随到。

5 个答案:

答案 0 :(得分:1)

所以,

我可以看到你是新手,我可以告诉你的一个主要方式是你的任何一个功能名称都没有任何意义!关于编程的一个主要问题是可以帮助这里的堆栈溢出帮助你为你的函数/对象提供好名字。凯文和格林都不是有用的名字。

关于那个话题,制作两个绿色()[不知道它应该从名称做什么...也许打开会是一个更好的名字?或者写了?]函数不允许你同时使用它们。如果必须,请命名一个green1和另一个green2。

现在,就你的计划而言,我认为这样做的一般想法如下:

  • 有一个名为bottleText(i)的函数,其中i是整数。 bottleText将该诗节作为字符串返回。您可能还想导入一个函数,您可以将整数转换为数字或自己编写辅助函数。
  • 创建一个调用green()函数的循环并将文本写入文件。我实际上将函数更改为绿色(str)并使str成为要写入的文本。

这有什么意义吗?如果您有任何疑问,请随时发表评论。

答案 1 :(得分:1)

这里有一些代码可以揭开问题的基本算法的神秘面纱。它不会像你要求的那样完全按照我选择的随机格式打印歌词。要理解此代码,您必须了解列表,for循环,迭代和输出。现在,您的工作就是理解代码并使其按照您希望的方式执行输出到文件的操作。如果您在理解代码时遇到任何问题,请询问。

这并不能完全回答你的提示,但由于你的问题基本上只是“如何”循环并创作歌曲的经文,我想用列表for循环做一个简单的演示,和字符串。

numbers = [
'Zero',
'One',
'Two',
'Three',
'Four',
'Five',
'Six',
'Seven',
'Eight',
'Nine',
'Ten' ]

text_one = 'green bottles hanging on the wall'
text_two = 'And if one green bottle should accidentally fall\nThere\'ll be'

# Each iteration of this loop prints one verse of the song
for i in range(10, 0, -1):
    print(numbers[i], text_one)
    print(numbers[i], text_one)
    print(text_two, numbers[i-1], text_one)

答案 2 :(得分:0)

首先,Python对你如何分配东西很挑剔。在此示例中,您实际上需要缩进定义函数“green”的代码块。例如:

def green():
    file = open('greenbottles.txt','a')
    file.write(a)
    file.close()

我不确定为什么文件不会出现,除非你忘了关闭文件,或者你对你所在的目录没有足够的写权限。现在,你的第二部分代码重新定义了绿色功能。如果你想使用绿色功能,那么你不需要“def”。如果要将变量插入到文本中,则可以像这样“插入”它们:

def green():
    my_variable = 10
    my_bottle_color = "green"
    my_string = "HI! I have %s %s bottles!" % (my_variable, my_bottle_color)
    file = open('greenbottles.txt','a')
    file.write(my_string)
    file.close()

答案 3 :(得分:0)

我首先阅读http://www.99-bottles-of-beer.net/该网站提供了如何创建循环的示例,该循环将解决您的问题,而与您尝试编写哪种语言无关。 (对于任何一个特定语言的新手来说,它也是一个很好的资源。)特别是对于python,您可以从他们的任何examples开始,但请阅读其中的一些,以尝试查看其中的基本性质解决方案的类型。祝你好运。

答案 4 :(得分:0)

试试这个,它可以添加你想要的东西:

def main():
    import time
    while True:
        try:
            num1 = int(input("Pick a number between 10 and 30: "))
        except ValueError:
            print("That's not a number!")
            continue
        if num1 > 30 or num1 < 10:
            print("Not Valid!")
            continue
       break           
    while True:
        try:
            hue = str(input("Pick a colour; Red, Green, Blue: ")) 
        except ValueError:
            print("Letters not numbers!") 
            continue                        
        if  (hue == "Red") or (hue == "red") or (hue == "Green") or (hue == "green") or (hue == "Blue") or (hue == "blue"):

            break
    print("Generating File")
    time.sleep(3)
    numbers ='no', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen', 'Twenty', 'Twentyone', 'Twentytwo', 'Twentythree', 'Twentyfour', 'Twentyfive', 'Twentysix', 'Twentyseven', 'Twentyeight', 'Twentynine', 'Thirty' 
    text_one = hue +' bottle%s\nHanging on the wall'
    text_two = "And if one " + hue + " bottle\nShould accidentally fall\nThere'll be"
    text_three =' \n'

    with open(numbers[num1] + ' ' + hue + ' Bottles.txt', 'w') as a:
        for l in range(num1, 0, -1):                                              
            a.write(numbers[l]+ ' ')
            if l == 1:
                a.write(text_one % '' +'\n')
            else:
                a.write(text_one % 's' +'\n')

            a.write(numbers[l] + ' ')
            if l == 1:
                a.write(text_one %  '' + '\n') 
            else:
                a.write(text_one % 's' +  '\n')
            a.write(text_two + ' ')
            a.write(numbers[l-1] + ' ')
            if (l - 1) ==1 :
                a.write(text_one % ''+'\n')
            else:
                a.write(text_one % 's'+'\n')
            a.write('\n' + '\n')


if __name__ == '__main__':
    main()