我正在尝试创建一个文件作为标题,然后稍后打开它以附加新记录,但似乎我没有正确地做某事,有没有人有想法?
这是下面的代码:
我已经尝试过几种方式但无济于事。
file = 'Quizdata5.txt'
users = {}
def header():
headers = ("USERID LOGIN-NAME SURNAME NAME AGE "
" YEAR-GROUP SEX USERNAME\n")
with open(file, 'w') as file1:
file1 .write(headers)
file1.close()
def newUser():
global users
global header
global createLogin
global createPassw
global surname
global name
global age
global y_group
global sex
global z1
createLogin = input("Create login name: ")
if createLogin in users: # check if login name exists
print("\nLogin name already exist, please choose a different name!\n")
else:
createPassw = input("Create password: ")
users[createLogin] = createPassw # add login and password
#return (users[createLogin])
surname = input("Pls enter your surname: ")
name = input("Pls enter ur name: ")
age = input("Pls enter your age: ")
y_group = int(input("Please enter your year group: "))
sex =input("Please enter your sex: ")
print("\nUser created!\n")
print("*********************************")
print(" Your Name is\t" + name, "and it starts with: " + name[0] + "\n")
z1 = createPassw[:3] + age
print(" Your Username is:\t ", z1)
if __name__ =='__main__':
header()
while newUser():
with open(file, 'a') as file2:
rows = ("{:8} {:8} {:8} {:8} {:8} {:8}"
" {:8} {:8} \n".format(createLogin, createPassw,
surname, name, age,
y_group, sex, z1))
file2.write(rows.split())
file2.close()
#enter code here
答案 0 :(得分:0)
下面的工作版本。请注意,我将CredUIPromptForWindowsCredentials
语句更改为raw_input。我正在使用Python 2.7。需要的主要内容:
似乎现在正在工作并准备好进行更多改进。建立一点,测试直到工作,然后建立更多 - 节省大量的时间!
input
答案 1 :(得分:0)
如果不直接重写代码,那么问题就在于
while newUser():
这意味着调用newUser()
,如果newUser()
的返回值(以布尔值计算)返回True
,则执行缩进代码 。那是bool(newUser()) is True
。
现在问题是
a)newUser()
返回什么,
b)bool()
是什么意思?
首先b:Python中的所有对象都有一些" boolean"与之关联的值True
或False
。对于许多内置类型,他们的布尔值评估是有意义的。例如,整数0
在布尔上下文中被视为False
,而任何非零整数都被视为True
。大多数编程语言都是这种情况,但有一些例外。
同样,空列表[]
在布尔上下文中是False
(这就是为什么我们可以写if not my_list: ...
之类的东西来测试列表是否为空)而任何非空列表被视为True
,依此类推。
至于:
您的newUser()
功能并未明确返回和任何结果,因为您没有return
声明(Tom的解决方案)补充一些)。您要做的是在添加新用户时返回True
- ish值,在没有新用户添加时返回False
- ish值。但是,由于你没有返回任何东西,事实上,如果你没有明确return
,Python的函数的默认返回值是一个名为None
的值,它始终是False
。
因此,最终结果是while
语句下的代码永远不会运行。
如果您对代码的作用有任何疑问,请逐行查看并确切了解它正在做什么 - 返回哪些函数以及将哪些值赋给变量 - 使用pdb
调试器(Google将指导您快速学习一些好的教程)。特别是Python,没有理由对你的代码实际做的事情一无所知。