im在python 3.7.2中创建骰子游戏,我需要将结果写入文本文件,但以当前格式会出现错误
我尝试过只转换为字符串,但这只会导致更多问题
file = open("dicegamescores.txt","w")
x = str('on round',x,username1 ,'has',player1_score , '\n',username2'has', player2_score)
file.write(x)
file.close
我希望根据循环将正确的变量值(“ on round”,x,username1,“ has”,player1_score,“ \ n”,username2,“ has”,player2_score写入文件中) 但是得到这个:
当不强制使用STR时:
Traceback (most recent call last):
File "C:\Users\joelb\AppData\Local\Programs\Python\Python37\dicegame.py", line 45, in <module>
file.write(x)
TypeError: write() argument must be str, not tuple
或者当我广播到STR:
Traceback (most recent call last):
File "C:\Users\joelb\AppData\Local\Programs\Python\Python37\dicegame.py", line 44, in <module>
x = str('on round', x, username1 , 'has', player1_score , '\n' , username2 , 'has', player2_score )
TypeError: str() takes at most 3 arguments (9 given)
答案 0 :(得分:0)
应该是这样的:
x = 'on round {round} {user1} has {user1score} \n {user2} has {user2score}'.format(
round = x, user1 = username1, user1score = player1_score, user2= username2, user2score = player2_score)
使用.format()
方法,您可以将值插入占位符,即round
。
答案 1 :(得分:0)
当您尝试以某种方式向文件中写入内容时,必须使用字符串,因此这就是第一个失败的原因。 第二个失败,因为(如错误所述)您尝试从未分组的元素中创建一个字符串。为了使这项工作有效,元素应为一个数组/列表,以便Python可以从中创建适当的字符串:
x = str(['on round',x,username1 ,'has',player1_score , '\n',username2'has', player2_score]) #See the square brackets
不过,更Python化的方式是:
x = "on round %s %s has %d \n %s has %d" % (x, username1, player1_score, username2, player2score)
%s插入字符串,%d插入整数,%f插入浮点数。有关此说明,请参见Learn Python。
答案 2 :(得分:0)
嘿,您需要将x变量设置为字符串格式。 您可以使用以下代码:
file = open("dicegamescores.txt","w")
x = ('on round',2,username1 ,'has',player1_score , '\n',username2,'has', player2_score)
xx = ("%s%s%s%s%s%s%s%s%s")%(x)
file.write(xx)
file.close
对于变量中的每个字符串,您都应添加%s。