簡體   English   中英

當我輸入一個整數時 Python 腳本崩潰

[英]Python script crashes when I input an integer

我試圖在 py 中制作一個簡單的骰子,我嘗試制作這樣你可以改變骰子的邊數,如果它為空,默認為 6。但是當我輸入一些東西時,它崩潰了。

import keyboard #Import keyboard stuff like enter (pip install keyboard)
import random #Import random stuff
import time

sides = 1
sidesSelect = input("Amount of sides the dice has. If empty, 6: ")
is_non_empty= bool(sidesSelect)
if is_non_empty is False:
    sides = 6
else:
    sides = sidesSelect

time.sleep(0.5)

while True: 
    nmb = random.randint(1,sides) #Get random integer
    print("The dice rolled ", nmb) 
    input('Press enter to roll the dice again') #Ask if you want to throw again
    time.sleep(random.uniform(0.2,0.8))

我已經嘗試更改 == 是,但什么也沒發生

if is_non_empty is false:

您的代碼存在的一個問題是它試圖直接使用輸入而不考慮類型。

input()返回一個字符串,因此在randint使用它之前必須將其轉換為正確的類型

嘗試這樣的事情。


#python3

sidesSelect = int(input("Amount of sides the dice has. If empty, 6: ") or "6")

nmb = random.randint(1, sidesSelect) #Get random integer

輸入()

您應該改為使用float(input(...))將其轉換為浮點數,然后使用math.isnan()檢查以確保它不是 NaN ,然后如果它是有效數字,則將其轉換為一個 int 並繼續。

import math
sidesSelect = float(input('Enter sides') or 'nan')
if math.isnan(sidesSelect):
    sides = 6
else:
    sides = int(sidesSelect)
#rest of code

因為 float(invalid) 會返回 nan,所以可以查看輸入的數字是否有效,如果有效,則轉換為 int。 否則,您可以使用默認設置,然后繼續。

暫無
暫無

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

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