簡體   English   中英

打印功能不打印結果

[英]Print function not printing results

我正在嘗試為一個簡單的游戲編寫代碼。 從一個基地開始,但我面臨着非常煩人的錯誤(而不是小故障)。

import random
winning_number = random.randint(1, 1000)
allowed_numbers_single_digit = random.randint(1, 10)
allowed_numbers_single_digit2 = random.randint(1, 10)
allowed_numbers_single_digit3 = random.randint(1, 10)
allowed_numbers_single_digit4 = random.randint(1, 10)
middle_column_numbers = (10, 15, 20, 25)
right_column_numbers = (50, 75, 100)

double_digit_allowed = random.choice(middle_column_numbers) 
double_high_digits = random.choice(right_column_numbers)

print(f"""Number that we are looking for is {winning_number}. 
You may use {allowed_numbers_single_digit, allowed_numbers_single_digit2, allowed_numbers_single_digit3, 
             allowed_numbers_single_digit4, double_digit_allowed, double_high_digits}
 """)
x = input()
print(x)

if winning_number != x:
    print('Sorry, no points for you')
else:
    print('You got 10 points!')

我正在談論的故障:當用戶將數字輸入到字符串 'x' 時,下一行的寫法幾乎相同。 例如:如果用戶輸入 6+5,print 會打印出 6+5 而不是 11。有什么提示嗎?

當用戶輸入x您會得到一個字符串,並且不會對其進行評估。 如果你想評估他們寫的表達式,你可以這樣做

x = eval(input())

在這種情況下, x將是一個整數。

如果您只想將輸入的字符串解析為整數,(不支持 + 或 - 或其他),您可以這樣做

x = int(input())

編輯:

eval有潛在危險,在這種情況下實際上可以讓用戶作弊。 如果用戶winning_number ,則將選擇中獎號碼。

相反,您可以使用literal_eval來避免這種情況。

import ast
x = ast.literal_eval(input())

這限制了用戶使用程序其余部分中定義的變量,以及運行任何代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM