2016-07-27 1 views
0

Я начинающий студент в классе кодирования питона. У меня есть большая часть сделанного и сама программа работает, однако мне нужно выяснить способ заставить программу спросить, хочет ли вы вычитать или добавить проблему, и если пользователь захочет задать другой вопрос. Я попросил учителя помочь, и он не вернулся ко мне, поэтому я просто пытаюсь понять и понять, что именно мне нужно делать.Мне нужно выяснить, как сделать мою программу повторяющейся. (Класс кодирования Python)

import random 

x = int(input("Please enter an integer: ")) 
if x < 0: 

    x = 0 

    print('Negative changed to zero') 

elif x == 0: 

    print('Zero') 

elif x == 1: 

    print('Single') 

else: 

    print('More')  

maximum = 10 ** x; 
maximum += 1 
firstnum = random.randrange(1,maximum)  # return an int from 1 to 100 

secondnum = random.randrange(1, maximum) 

compsum = firstnum + secondnum   # adds the 2 random numbers together 

# print (compsum)      # print for troubleshooting 

print("What is the sum of", firstnum, " +", secondnum, "?") # presents problem to user 

added = int(input("Your answer is: ")) # gets user input 

if added == compsum:      # compares user input to real answer 

    print("You are correct!!!") 

else: 

    print ("Sorry, you are incorrect") 
+4

['while' loops] (https://wiki.python.org/moin/WhileLoop) будет полезен. – erip

+0

У меня было что-то подобное в цикле, но цикл вопросов, но я не совсем уверен, как его реализовать. – Packy502

+0

'play = True во время игры: choice = input (« Еще один вопрос? Y/n: ») if choice ==" n ": print" Спасибо, хорошо провели день! " playing = False else: Печать «Давая еще одну проблему!» ' – Packy502

ответ

0

Если вы хотите, чтобы у другого вопроса задан цикл while и попросите пользователя ввести его. Если вы хотите, чтобы пользователь вводил ли (-ы), что он хочет добавить или добавить, вы уже использовали инструменты для запроса такого ввода. Просто спросите пользователя о строке.

4

Вы хотите сделать что-то вроде этого:

def foo(): 
    print("Doing good work...") 

while True: 
    foo() 
    if input("Want to do more good work? [y/n] ").strip().lower() == 'n': 
     break 

Я видел эту конструкцию (то есть, используя break) используется чаще, чем при использовании в Python с sentinel, но либо будут работать. Версия дозорного выглядит примерно так:

do_good_work = True 

while do_good_work: 
    foo() 
    do_good_work = input("Want to do more good work? [y/n] ").strip().lower() != 'n' 

Вы также захотите сделать больше ошибок, чем я, в вашем коде.

+0

Я пробовал что-то похожее на первый код« def quest() », и я не мог правильно его использовать, он просто сказал, что есть синтаксическая ошибка, но я не совсем уверен, как это исправить. – Packy502

+0

@ Packy502 Если вы используете Python 2, вам нужно использовать 'raw_input' вместо' input'. Вышеприведенный код предназначен для Python 3. – erip

1

Просить пользователей о вводе просто, вам просто нужно использовать встроенную функцию ввода() python. Затем вы сравниваете сохраненный ответ с некоторыми возможными результатами. В вашем случае это будет работать нормально:

print('Would you like to test your adding or subtracting skills?') 
user_choice = input('Answer A for adding or S for subtracting: ') 
if user_choice.upper() == 'A': 
    # ask adding question 
elif user_choice.upper() == 'S': 
    # ask substracting question 
else: 
    print('Sorry I did not understand your choice') 

Для повторения кода While петли ваш выбора, они будут повторно выполнить инструкцию в них в то время как исходное условии истинно.

while True: # Condition is always satisfied code will run forever 
    # put your program logic here 
    if input('Would you like another test? [Y/N]').upper() == 'N': 
     break # Break statement exits the loop 

В результате использования функции input() всегда является строкой. Мы используем метод .upper(), который преобразует его в UPPERCASE. Если вы напишете это так, неважно, ответит ли кто-нибудь N или n, цикл все равно закончится.

Смежные вопросы