#python
#python
Вопрос:
Я хочу, чтобы знак процента отображался после того, как пользователи введут свой номер. Спасибо
percent_tip = float(input(" Please Enter the percent of the tip:")("%"))
Например, прежде чем пользователь введет что-либо, что они должны увидеть:
Please Enter the percent of the tip:
Как только они начнут вводить число 20
, они должны увидеть:
Please Enter the percent of the tip: 20
После того, как они нажмут <Enter>
, они должны увидеть:
Please Enter the percent of the tip: 20%
Комментарии:
1. После того, как было введено число? Сразу за номером при его вводе?
2. Да после ввода номера. Например, если число равно 20, то я хочу, чтобы отображалось 20%.
3. После ввода окончательного числа? Или также при наборе текста?
4. После ввода окончательного числа
5. Но непосредственно после введенного пользователем номера?
Ответ №1:
Пожалуйста, попробуйте это, если это то, о чем вы просите:
import sys
import time
percent_tip = ""
while percent_tip in "123456789": # This part checks with the "if" statement, if its not a integer then it returns
percent_tip = input("Please Enter the % of the tip: ")
if percent_tip in "123456789":
print(str(percent_tip) " %") # Prints the number and the percentage symbol
sys.exit() #stops the shell
else:
time.sleep(.100) #Shell waits then goes back in the while loop (unless its controlled by the "while" and "if")
Пожалуйста, не пытайтесь усложнять себя кодом, который вы не знаете, как это сделать.
Ответ №2:
Если вы используете Windows, у вас будет доступен msvcrt
модуль. Он предоставляет, среди прочего, getwche()
функцию, выдающую нажатую клавишу. Это позволяет вам воздействовать на отдельные символы, а затем выводить% в конце (если вы еще немного поиграете, вы, вероятно, сможете также заставить его отображаться при наборе текста).
Пример:
def get_chars():
chars = []
new = msvcrt.getwche()
while new != 'r': # returns r on <RETURN> press
# you probably want to do some input validation here
chars.append(new)
new = msvcrt.getwche() # get the next one
print(end='%', flush=True)
return ''.join(chars) # this returns a str, you might want to directly get an int
Кроме того, вы, вероятно, захотите добавить проверку ввода внутри, чтобы убедиться, что вводятся только числа.