Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с Python.

Кирилл Тимченко Знаток (359), на голосовании 9 месяцев назад
Учусь программировать. Решил написать что-то поинтереснее чем "Привет, мир", например, викторину.

Vopros_otvet1=input("В каком году вышла Windows 98? :")
If Vopros_otvet1 = 1998

Вот дальше я не понимаю как сделать так, чтобы в случае ввода "1998" программа переходила к следующему вопросу, а если введено что-то другое вопрос повторялся.
Голосование за лучший ответ
барсик гейм Ученик (138) 10 месяцев назад
Брат это цикл while надо
барсик геймУченик (138) 10 месяцев назад
Щас чётко распишу пишешь крч

While True :
A = int(input("твой вопрос")
If A == (1998) :
Print(' твой ответ ')
Тимур Сперанский Профи (554) 10 месяцев назад
 import random

while True:
questions = ["В каком году вышла Win98?"]
answers = ["1998"]
index = random.randint(0,<последний индекс вопроса>)

user_answer = input(questions[index])
if user_answer == answers[index]:
print("Правильный ответ!")
continue
попробуй это, в random.randint (второе значение) надо поставить последний индекс списка (НЕ -1!!!)
Кирилл ТимченкоЗнаток (359) 10 месяцев назад
Можете объяснить мне неразумному, как это работает? Что означает index?
Тимур Сперанский Профи (554) Кирилл Тимченко, перевожу на русский:
 индекс = рандом.рандомное_целое_число(от, до) 
библиотека random позволяет делать рандомизацию
Geniy Joskiy Знаток (381) 10 месяцев назад
Питон - это змея
Тимур СперанскийПрофи (554) 10 месяцев назад
питон, пайтом одно и то же, но произношение разное?
никитос фадейкин Знаток (369) 10 месяцев назад
Vopros_otvet1=input("В каком году вышла Windows 98? :")
while True:
Vopros_otvet1=input("В каком году вышла Windows 98? :")
if Vopros_otvet1 = 1998:
break
Vopros_otvet2 = input("Ваш вопрос")
if Vopros_otvet2 == " Ваш ответ "
Кирилл ТимченкоЗнаток (359) 10 месяцев назад
В break первая буква подсвечивается красным,все недостающие пробелы поставил
Avis Оракул (90832) 10 месяцев назад
Например, викторину..
..дальше я не понимаю.
Значит рановато для викторины.

Вам надо знать: типы данных, списки, словари, срезы, while, for..in, if-elif-else, выход из цикла, работу со строками (в частности перевод регистра и f-строки). Желательно функции и генераторы, иначе утонете в вложениях и растягиваниях циклов из одного и того же.
А в идеале уже понимать работу try/except, потому что обработка ошибок ввода - самая большая проблема таких тестов: например, ваша программа "ждёт" что пользователь напишет число, а пользователь пишет букву. И всё - ваша викторина тут же ломается с ошибкой TypeError. Или программа ожидает строку, а пользователь ничего не вводит и пропускает вопрос - ValueError.

Я уже кому-то писал пример опросника. Вот так выглядит относительно приемлемая программа викторины пока ещё даже без обхода исключений (проверки ввода):
 from random import sample, shuffle 

data = {'Вопрос 1':('test',['Правильный ответ', 'Неправильный ответ', 'Неправильный ответ']),
'Вопрос 2':('test',['Правильный ответ', 'Неправильный ответ', 'Неправильный ответ']),
'Вопрос 3':('question',['правильно']),
'Вопрос 4':('calc', [])}

def test(text:str,answers:list):
que_lst = answers[:]; shuffle(que_lst)
print(text)
for i in range(len(que_lst)):
print(f'{i+1}.{que_lst[i]}')
ans = int(input('Введите номер ответа: '))
if que_lst[ans-1] == answers[0]:
return True
else:
return False

def reply(text:str,answer:list):
ans = input(f'{text}\nВведите ответ: ')
if ans.lower() in (n.lower() for n in answer):
return True
else:
return False

def calc():
a,b = sample(range(1,10),2)
ans = int(input(f'Сколько будет {a} + {b}? Введите целое число: '))
if ans == a+b:
return True
else:
return False

res = []
for key in data:
form = data.get(key)[0]
if form == 'test':
res += [test(key,data.get(key)[1])]
elif form == 'question':
res += [reply(key,data.get(key)[1])]
elif form == 'calc':
res += [calc()]
print('---------')

print(f'Правильных ответов {sum(res)} из {len(data)}')
Очевидно, что это довольно далеко от "Hello, World!". Причём это откровенно учебный вариант, который просто работает и на хороший код не претендует.
Похожие вопросы