需要Python文件帮助

2024-04-20 13:41:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序可以很好地使用此程序检查周期表编号和元素的文件:

userline=input('Enter element number or element name: ')
userline=userline.capitalize()
f=open('periodic_table.txt')
while userline:
 for line in f:
   number,element=line.split()

但如果我在程序中添加这样的内容:

   else:
     print('Thats not an element!')
     userline=input('Enter element number or element name: ')
     userline=userline.capitalize()

它不断打印出一个元素,即使我们输入了正确的元素编号或名称


Tags: or文件name程序元素numberinputline
1条回答
网友
1楼 · 发布于 2024-04-20 13:41:43

您当前的方法不起作用的原因是您正在遍历一个列表。如果执行userline != element,当您第一次遇到不等于用户输入的元素或数字时,程序将打印错误消息。既然你在循环遍历每一个周期表元素,你会得到一堆错误信息!你知道吗

相反,首先尝试将每个周期表元素和数字添加到字典或列表中。这样,您就可以检查用户键入的内容是否在字典中,并返回一条错误消息,而不必遍历整个内容。你知道吗

下面是一个简短的示例,说明您可能想要尝试什么:

# The "with" statement automatically closes the file for you!
with open('periodic_table.txt') as f:  
    numbers = {}
    elements = {}
    for line in f:
        num, element = line.split()
        numbers[num] = element
        elements[element] = num

while True:
    userline = input('Enter element number or element name: ')
    userline = userline.capitalize()

    if userline in numbers:
        print('Element number ' + userline + ' is ' + numbers[userline])
    elif userline in elements:
        print('Element number for ' + userline + ' is ' + elements[userline])
    else:
        print("That's not real!")

(警告:我没有尝试运行这个,所以您可能需要对它进行一些调整以确保它正常工作)

相关问题 更多 >