如何解决str没有转换为float / int,因为它没有像数字一样忽略'\ n'-python
我正在做一些自学,遇到了这个问题。
def main():
golf = open('golf.txt','w')
name = not('end')
while name != 'end':
name = input("Enter players name or 'end' to quit ")
score = float(input('Enter score '))
golf.write(name + '\n')
golf.write(str(score) +'\n')
name = input("Enter players name or 'end' to quit ")
golf.close()
golf=open('golf.txt','r')
name = golf.readline()
while name !='':
score = float(golf.readline()) #ValueError#
name = name.rstrip('\n')
print(name,': ',score)
golf.close()
main()
Enter players name or 'end' to quit ted
Enter score 100
Enter players name or 'end' to quit end
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-b71bcadf2947> in <module>
27 golf.close()
28
---> 29 main()
30
31
<ipython-input-6-b71bcadf2947> in main()
21
22 while name !='':
---> 23 score = float(golf.readline())
24 name = name.rstrip('\n')
25
ValueError: could not convert string to float:
********changed float to int below**********
Enter players name or 'end' to quit ted
Enter score 100
Enter players name or 'end' to quit end
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-8bffc375cbfa> in <module>
27 golf.close()
28
---> 29 main()
30
31
<ipython-input-7-8bffc375cbfa> in main()
21
22 while name !='':
---> 23 score = int(golf.readline())
24 name = name.rstrip('\n')
25
ValueError: invalid literal for int() with base 10: '100.0\n'
我为此收到ValueError,我不明白。如果我将float更改为int,则可以进一步了解它不能完全转换的内容:“ 10 \ n”。似乎并没有像许多数字那样忽略逃生。尝试刷新我的内核,一切仍然一无所有。我不应该带一个字符串号...
解决方法
如果您有任何其他错误或疑问,请尝试并发布
def main():
name = ""
with open("golf.txt","w") as golf:
while name != "end":
name = input("Enter player's name or 'end' to quit: ")
if name != "end":
score = input("Enter score: ")
golf.write(name + "\n")
golf.write(score + "\n")
with open("golf.txt") as golf:
text = golf.read().split("\n")
for i in range(0,len(text),2):
try:
name = text[i]
score = text[i+1]
except IndexError:
break
print(f"{name}: {score}")
main()
f字符串
使用这些,以便您可以在python中的字符串内传递变量。 f字符串是python 3.6中引入的,您可以这样编写它们
string = f"Something here {variable}"
# You can also do the same in older versions by using '.format()'
string = "Something here {}".format(variable)
Here is a link to read more about string formatting and f-strings from "RealPython"
您可以从许多来源中了解和。
Here is a link to read about the with keyword from "GeeksforGeeks"
尝试/除外
try/except
块捕获可能发生的错误,并在该错误发生时执行代码。因此,当IndexError
大于i+1
时将发生len(text)
,因此发现我使用了try/except
块。
Here is a link to read more about it from "W3Schools"
休息
break
用于希望过早停止运行循环而不执行break
语句后的行。之所以使用它,是因为发生IndexError
时,它意味着列表已解析,并且我们无法打印分数或名称,因此我们需要退出循环。
Here is a link to read more about it from "Programiz"
ValueError
也不再发生,因为score
变量将始终是一个字符串,因为它没有进行任何计算。但是,您可以在创建text
变量后将其转换为浮点数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。