Я учусь на факультете программирования в колледже, и мне нужно создать генератор случайных чисел с помощью Python, но я никогда не смогу заставить его работать. Я либо получаю сообщение об ошибке, либо ничего не отображается. В настоящее время ошибка, которую я получаю с этой версией:
line 34, in <module>
print(rand.randchoice(X) in range(Y))
return seq[self._randbelow(len(seq))]
Type Error: object of type'int' has no len()
import os
import sys
import random as rand
import string as str
#FUNCTION FOR THE UI
print('Please choose a difficulty level for your new password:')
print('1. Easy')
print('2. Medium')
print('3. Hard')
X = int(len(input('Enter Your Choice Here: ')))
Y = int(len(input('Enter Number of Characters Here: ')))
easy = str.ascii_lowercase
medium = str.ascii_lowercase + str.ascii_uppercase + str.digits
hard = str.ascii_letters + str.ascii_uppercase + str.digits + str.punctuation
if X == '1':
X = easy
elif X =='2':
X = medium
elif X == '3':
X = hard
print(rand.choice(X) in range(Y))
Я также попытался вручную ввести все символы в массивы. Я надеялся, что он получит случайные символы из каждого списка с длиной, соответствующей «Y».
Первая строка кода — строка 7, последняя строка — строка 34.
Не используйте одно и то же имя переменной (X) для двух разных вещей (числа, введенного пользователем, и выбранного списка символов).
Кстати говоря... X — это число, но вы сравниваете его со строками, поэтому оно никогда не будет равно.
И ещё... почему ты используешь len()? Не имеет значения, вводит ли пользователь 1 или 2 или a или b, X всегда будет 1. (Если, конечно, он не введет 10 или ab или xx и т. д., то тогда будет 2. И так далее.)
mkrieger1 Я просто проверял, сработает ли это, и увидел, что это возможное решение подобных проблем. Я просто забыл удалить это здесь.






Ошибка возникает потому, что переменная y представляет собой целое число, представляющее длину входной строки, а не количество символов, которые пользователь хочет включить в свою случайную строку.
import random as rand
import string as string_module
print('Please choose a difficulty level for your new password:')
print('1. Easy')
print('2. Medium')
print('3. Hard')
x_choice = input('Enter Your Choice Here: ')
y_chars = int(input('Enter Number of Characters Here: '))
easy = string_module.ascii_lowercase
medium = string_module.ascii_lowercase + string_module.ascii_uppercase
hard = string_module.ascii_letters + string_module.digits + string_module.punctuation
if x_choice == '1':
x = easy
elif x_choice == '2':
x = medium
elif x_choice == '3':
x = hard
else:
print("Invalid choice!")
Теперь y_chars представляет количество символов, которые пользователь хочет включить в свою случайную строку, что должно устранить ошибку TypeError, с которой вы столкнулись.
Вместо этого можно использовать random.sample.
Я заметил несколько проблем. Во-первых, вы получаете длину пользовательского ввода, а не ввода. Строки 16 и 17 (согласно изображению) должны быть:
X = int(input('Enter Your Choice Here: '))
Y = int(input('Enter Number of Characters Here: '))
Кроме того, строки с 27 по 32 должны проверять наличие целого числа, а не строки:
if X == 1:
X = easy
elif X == 2:
X = medium
else:
X = hard
Наконец, чтобы распечатать сгенерированный пароль, вместо этого вам следует использовать этот код:
for i in range(Y):
print(rand.choice(X), end = "")
Конец = "" означает, что следующий символ пароля будет напечатан в той же строке консоли.
Это будет окончательный код:
import os as os
import sys as sys
import random as rand
import string as str
#FUNCTION FOR THE UI
print('Please choose a difficulty level for your new password:')
print('1. Easy')
print('2. Medium')
print('3. Hard')
X = int(input('Enter Your Choice Here: '))
Y = int(input('Enter Number of Characters Here: '))
easy = str.ascii_lowercase
medium = str.ascii_lowercase + str.ascii_uppercase + str.digits
hard = str.ascii_letters + str.ascii_uppercase + str.digits + str.punctuation
if X == 1:
X = easy
elif X == 2:
X = medium
else:
X = hard
for i in range(Y):
print(rand.choice(X), end = "")
Покажите код и полную информацию об ошибке в виде правильно отформатированного текста (в формате кода) в вопросе.