我是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()
当程序再次迭代时,我希望用户能够为问题提供不同的细节。我知道当人们提出问题时人们讨厌,看起来他们只是想让人们为他们做功课,但如果我找不到解决方案的话,这会让我有一段时间的错误。
答案 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)
好像你有两个不同的问题:
您有两种选择:
break
statement会立即结束while循环。您可以决定用户应该键入哪些内容以退出(例如"q"
或其他),检查他们是否已输入,以及break
(如果是)。while循环在声明中有退出条件,您可以将它用于与上面相同类型的退出命令。例如:
user_input = "default value"
while user_input != "q":
user_input = raw_input("Type 'q' if you want to exit!")
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)