Как вернуть значения из функции, которые повторяются в цикле for - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь написать программу, которая будет принимать вводимые пользователем данные (в этом случае они выбирают изотоп из списка), сопоставлять его со списком, а затем распечатывать изотоп и его период полураспада. Это все работает отлично, за исключением того, что я не могу использовать период полураспада, который был согласован с входом за пределами -1 oop. Я попытался заключить его в функцию, чтобы вернуть результат, но ничего, что я делаю, похоже, не работает. Код ниже:

i=0
iso = list(["Oxygen-22", 2.25, "Carbon-15", 2.45, "Flevorium-289", 2.6, "Oxygen-21", 3.42, "Nitrogen-17", 4.17, "Beryllium-14", 4.84, "Nitrogen-16", 7.13, "Oxygen-20", 13.5, "Beryllium-11", 13.8, "Carbon-10", 19.3, "Oxygen-19", 26.5, "Dubnium-261", 27, "Seaborgium-266", 30, "Dubnium-262", 34]);

print("Please select from the below list of isotopes:");
while i < len(iso):
  print iso[i];
  i = i + 2;

def search(x,y):
  u_iso = input("Enter selection:");
  for x in range(len(iso)):
    if u_iso == iso[x]:
      y = x+1;
      print("Isotope:",iso[x],"Half-life:", iso[y],"seconds");
    else:
      x=x+2;
    if u_iso not in iso:
      x=0;
      u_iso = input("Enter selection again:");
      if u_iso == iso[x]:
        y = x+1;
        print("Isotope:",iso[x],"Half-life:", iso[y],"seconds");
      else:
        x=x+2;
  return x, y;

search(0,0);
print x,y;

Ответы [ 3 ]

0 голосов
/ 03 апреля 2020

Всегда лучше использовать словарь, если у вас есть пара ключ: значение Документация по словарю https://www.geeksforgeeks.org/python-dictionary

кстати, я преобразовал ваш код в словарь,

iso = {}

iso = {"Oxygen-22" : 2.25, "Carbon-15" : 2.45, "Flevorium-289" : 2.6, "Oxygen-21" : 3.42, "Nitrogen-17" : 4.17, "Beryllium-14" : 4.84, "Nitrogen-16" : 7.13, "Oxygen-20" : 13.5, "Beryllium-11" : 13.8, "Carbon-10" : 19.3, "Oxygen-19" : 26.5, "Dubnium-261" : 27, "Seaborgium-266" : 30, "Dubnium-262" : 34}

u_iso = input("Enter selection:");

print(u_iso,end=" ")

print(iso[u_iso])

, а вывод:

Enter selection: Oxygen-19

Oxygen-19 26.5
0 голосов
/ 03 апреля 2020

Вы можете попробовать этот простой способ ....

iso =["Oxygen-22","2.25", "Carbon-15","2.45", "Flevorium-289","2.6", "Oxygen- 
21","3.42", "Nitrogen-17","4.17", "Beryllium-14","4.84", "Nitrogen-16","7.13", 
"Oxygen-20","13.5", "Beryllium-11","13.8", "Carbon-10","19.3", "Oxygen-19", 
"26.5", "Dubnium-261","27", "Seaborgium-266", "30", "Dubnium-262", "34"]
print("Please select from the below list of isotopes: ")
i=0
while i < len(iso):
   print(iso[i])
   i = i + 2
def search():
    u_iso = input("Enter selection: ")
    for x in range(len(iso)):
        if u_iso == iso[x]:
            y = x+1
                print("Isotope:"+iso[x]+"Half-life:"+ iso[y]+"seconds")
            else:
                pass (or) print("Isotope not found")
search()

результат будет ..

Enter selection: Oxygen-22
Isotope:Oxygen-22Half-life:2.25seconds
(or)
Enter selection: Iron
Isotope not found
0 голосов
/ 03 апреля 2020

Добро пожаловать в Stackoverflow. На самом деле вы не сохраняете значения, возвращаемые функцией, поэтому вы не можете их использовать. Если вы хотите получить возвращаемое значение с помощью функции, вы можете сохранить его в виде двух переменных и позже вы можете распечатать их.

i=0
iso = list(["Oxygen-22", 2.25, "Carbon-15", 2.45, "Flevorium-289", 2.6, "Oxygen-21", 3.42, "Nitrogen-17", 4.17, "Beryllium-14", 4.84, "Nitrogen-16", 7.13, "Oxygen-20", 13.5, "Beryllium-11", 13.8, "Carbon-10", 19.3, "Oxygen-19", 26.5, "Dubnium-261", 27, "Seaborgium-266", 30, "Dubnium-262", 34]);

print("Please select from the below list of isotopes:");
while i < len(iso):
  print iso[i];
  i = i + 2;

def search(x,y):
  u_iso = input("Enter selection:");
  for x in range(len(iso)):
    if u_iso == iso[x]:
      y = x+1;
      print("Isotope:",iso[x],"Half-life:", iso[y],"seconds");
    else:
      x=x+2;
    if u_iso not in iso:
      x=0;
      u_iso = input("Enter selection again:");
      if u_iso == iso[x]:
        y = x+1;
        print("Isotope:",iso[x],"Half-life:", iso[y],"seconds");
      else:
        x=x+2;
  return x, y;

p,q = search(0,0);
print p,q;

Я надеюсь, что это будет работать так, как вы хотите, если у вас есть дополнительные сомнения, что вы можете Поделись со мной. ?

...