В настоящее время я изучаю python, и, пытаясь написать простую программу для лото, я столкнулся с небольшой проблемой.рекурсивный генератор чисел не работает
Я пытаюсь создать два списка, каждый из которых содержит шесть чисел. первый из них генерируется, запрашивая у пользователя число.
Второй генерирует случайные целые числа от 1 до 49 с помощью randint
Если я код так:
from random import randint
lottoschein = []
gewinnzahlen = []
while (len(lottoschein)<6):
lottoschein.append(int(input("Bitte geben sie eine Zahl ein: ")))# Eingabeaufforderung
print (lottoschein)
print (len(lottoschein))
while (len(gewinnzahlen)<6):
zahl = randint (1,49)
gewinnzahlen.append(zahl)
print (gewinnzahlen)
Это на самом деле работает и генерирует хороший выход, как
Bitte geben sie eine Zahl ein: 1
[1]
1
Bitte geben sie eine Zahl ein: 5
[1, 5]
2
Bitte geben sie eine Zahl ein: 4
[1, 5, 4]
3
Bitte geben sie eine Zahl ein: 4
[1, 5, 4, 4]
4
Bitte geben sie eine Zahl ein: 5
[1, 5, 4, 4, 5]
5
Bitte geben sie eine Zahl ein: 8
[1, 5, 4, 4, 5, 8]
6
[40]
[40, 33]
[40, 33, 42]
[40, 33, 42, 20]
[40, 33, 42, 20, 35]
[40, 33, 42, 20, 35, 14]
Только то, что я попросил.
Но если я пытаюсь кодирование его в рекурсивной функции следующим образом:
from random import randint
lottoschein = []
gewinnzahlen = []
def zahlen (schein,zahl):
if(len(schein)<6):
schein.append(zahl)
return zahlen (schein,zahl)
else:
print (schein)
return schein
lottoschein = zahlen (lottoschein, int(input("Bitte geben sie eine Zahl ein: ")))
gewinnzahlen = zahlen (gewinnzahlen, randint (1,49))
возвращает вывод, как:
Bitte geben sie eine Zahl ein: 2
[2, 2, 2, 2, 2, 2]
[17, 17, 17, 17, 17, 17]
кажется, что он генерирует число только один раз.
Я не понимаю, почему. Может ли кто-нибудь помочь мне получить рекурсивную функцию, работающую, пожалуйста?
Вы просите номер только один раз! 'input (« Bitte geben Sie eine Zahl ein »)' происходит только один раз. Возможно, вам захочется переместить этот фрагмент кода внутри вашей функции zahlen. – chahuistle
Я не могу использовать вход внутри моей функции zahlen, потому что тогда мне понадобится 2 функции. Один для ручного ввода другой для автоматической генерации. что сделало бы функциональное программирование совершенно бесполезным – Sulumar